我在应用程序中有一个自定义画布,它没有显示图像,在XAML中,我写道:
<local:MyCanvas>
<local:MyCanvas.LayoutTransform>
<ScaleTransform x:Name="scale" ScaleX="1" ScaleY="1" />
</local:MyCanvas.LayoutTransform>
<Image Source="C:\abc.jpg" />
</local:MyCanvas>
我在Canvas上尝试过它,但是它有效,但是在派生类中,它没有出现,但是Visual Studio显示了已添加图像的轮廓意义。
作为替代方案,在MyCanvas:Canvas类中,我输入:
Image img = new Image();
img.Width = 200;
BitmapImage myBitmapImage = new BitmapImage();
myBitmapImage.BeginInit();
myBitmapImage.UriSource = new Uri(@"C:\abc.jpg");
myBitmapImage.DecodePixelWidth = 200;
myBitmapImage.EndInit();
img.Source = myBitmapImage;
this.Children.Add(img);
仍然不可见。有什么想法吗?
答案 0 :(得分:0)
我一直在尝试不同的东西,我已经能够通过将它封装在DrawingVisual中来添加图像,这里是代码:
private void addImage (DrawingContext dc)
{
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.UriSource = new Uri(@"C:/abc.jpg");
bi.EndInit();
dc.DrawImage(bi, new Rect(new Point(0,0), new Point(200,200)));
}
然后将DrawingVisual添加到自定义Canvas中,这里是代码:
DrawingVisual abc = new DrawingVisual();
DrawingContext dc = abc.RenderOpen ();
addImage (dc)
dc.Close();
base.AddVisualChild(abc);
base.addLogicalChild(abc);
使用此方法,图像可见,并且工作正常。
但为什么不使用以前的方法添加到MyCanvas?