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

から派生させないで、代わりにWindow使用FrameworkElementするか、使用する必要がある場合は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 に答える