2

私は新しい WPF コントロールを作成し、それに Rectangle を追加しました。しかし、実際の画像で長方形をペイントすることはできません。

BitmapImage bi = GetImage();
ImageBrush imgBrush= new ImageBrush(bi);

this.rectangle.Fill = imgBrush;

ただし、このコードでは、ストロークを除いて四角形を透明にするだけです。

これはGetImage()方法です:

BitmapImage bi;

using (MemoryStream ms = new MemoryStream())
{
    bi = new BitmapImage();
    bi.CacheOption = BitmapCacheOption.OnLoad;

    texture.SaveAsPng(ms, texture.Width, texture.Height);

    ms.Seek(0, SeekOrigin.Begin);

    bi.BeginInit();
    bi.StreamSource = ms;
    bi.EndInit();

    ms.Close();
}
return bi;

textureこのコードの前に作成されるTexture2Dクラスです。

ここに戻りBitmap、画像が正しく描画されているBitmapImageことを保存します。Bitmap

ご協力ありがとうございました

4

1 に答える 1

4

これが正しい変換方法ですBitmap to BitmapImage:

using(MemoryStream memory = new MemoryStream())
{
    bitmap.Save(memory, ImageFormat.Png);
    memory.Position = 0;
    BitmapImage bitmapImage = new BitmapImage();
    bitmapImage.BeginInit();
    bitmapImage.StreamSource = memory;
    bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
    bitmapImage.EndInit();
}

「Pawel Lesnikowski」のおかげで、彼は次のトピックに anwser を投稿しました。

System.Drawing.Bitmap から WPF BitmapImage をロードする

于 2013-02-28T18:29:52.583 に答える