1

我正在尝试使用 WPF 加载和显示图像,但它不起作用。

public partial class MainWindow : Window
{
    BitmapImage imgsrc;

    public MainWindow()
    {
        InitializeComponent();

        imgsrc = new BitmapImage();
        imgsrc.BeginInit();
        imgsrc.UriSource = new Uri("c.jpg", UriKind.Relative);
        imgsrc.EndInit();
    }

    protected override void OnRender(DrawingContext drawingContext)
    {
         base.OnRender(drawingContext);
         drawingContext.DrawImage(imgsrc, new Rect(10, 10, 100, 100));
    }
}

c.jpg 文件在项目中并标记为复制到输出。

应用程序运行没有错误,并显示一个白色的空窗口

4

2 回答 2

2

这是覆盖OnRender(). _Window

不要从 派生WindowFrameworkElement而是使用,或者如果您必须使用,请Window尝试将背景设置为透明。

于 2012-09-04T13:50:44.360 回答
0

从 Window 继承的类上的 OnRender(...) 方法无法正常工作。你可以尝试这样的事情:

在您的 XAML 中

<Window x:Class="WpfTestApplication.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:own="clr-namespace:WpfTestApplication"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <own:MyRect />
</Grid>
</Window>

在这里显示图像的元素(用图像逻辑替换矩形)

public class MyRect : Panel
{
    protected override void OnRender(DrawingContext drawingContext)
    {
        SolidColorBrush mySolidColorBrush = new SolidColorBrush();
        mySolidColorBrush.Color = Colors.LimeGreen;
        Pen myPen = new Pen(Brushes.Blue, 10);
        Rect myRect = new Rect(0, 0, 500, 500);
        drawingContext.DrawRectangle(mySolidColorBrush, myPen, myRect);
    }
}
于 2012-09-04T14:12:57.770 回答