Изображение не видно на пользовательском холсте (производный класс Canvas) - PullRequest
0 голосов
/ 31 декабря 2011

У меня есть пользовательский холст в приложении, которое не показывает изображение, в XAML, я пишу:

<local:MyCanvas>
    <local:MyCanvas.LayoutTransform>
        <ScaleTransform x:Name="scale"  ScaleX="1" ScaleY="1" />
    </local:MyCanvas.LayoutTransform>
    <Image Source="C:\abc.jpg" />
</local:MyCanvas>

Я пробовал его на холсте, и он работает, но в производном классе,он не появляется, но 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);

Все еще не отображается.Есть идеи?

1 Ответ

0 голосов
/ 31 декабря 2011

Я экспериментировал с разными вещами, и я смог добавить изображение, заключив его в 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, используя предыдущий метод?

...