我正在尝试使用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文件位于项目中并标记为要复制到输出。
应用程序运行没有错误,并显示一个白色空窗口
答案 0 :(得分:2)
这是一个known issue,OnRender()
覆盖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);
}
}