按代码加载和显示JPG图像

时间:2012-09-04 13:11:39

标签: c# .net wpf

我正在尝试使用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文件位于项目中并标记为要复制到输出。

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

2 个答案:

答案 0 :(得分:2)

这是一个known issueOnRender()覆盖Window

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

答案 1 :(得分: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);
    }
}