私はC#とWPFの新機能ですが、これを完全に間違って見ることができます。私はJPEGバイト配列をソースとして持っています。私はこれを変更することはできません。私は配列を取得し、いくつかの計算を実行し、JPEGの領域に長方形を描画する必要があります。私はそれをImage XAMLコントロールに書き込みます。WPF:ImageSourceインスタンスにプログラムで矩形を描きます
私はJPEGを取得し、それをImageSource
に変換してImageControl
に表示することができます。私はImageSource
から描画コンテキストを取得する方法を見つけることができません。私はImageSourceConverter
を使用してJPEG配列を読み込み、このクラスはImageSource
インスタンス、duh!を返します。
ImageSource mImage = (ImageSource)mConverter.ConvertFrom(mImageBuffer);
ImageSource
には描画コンテキストプロパティがありません。
私が必要と思われるものはです。それはImageSource
から派生し、描画コンテキストプロパティを持っています。
ImageSource
の代わりにを使用するにはどうすればよいですか。
ImageDrawing
クラスを見ると、ImageSource
というプロパティがあります。このクラスには描画コンテキストはありません。
私は現在、Visualクラスを探していて、どこを見ていただければ幸いですか?
編集: ありがとうございます。正しい方向に私を指してくれてありがとうございます。私は次のように終わった:
ImageSource mImage = (ImageSource)mConverter.ConvertFrom(mImageBuffer);
BitmapSource bImage = mImage as BitmapSource;
// Draw a Rectangle
DrawingVisual dVisual = new DrawingVisual();
using (DrawingContext dc = dVisual.RenderOpen())
{
dc.DrawImage(bImage, new Rect(0, 0, bImage.PixelWidth, bImage.PixelHeight));
dc.DrawRectangle(Brushes.Green, null, new Rect(20, 20, 150, 100));
}
RenderTargetBitmap targetBitmap = new RenderTargetBitmap(640,480,96,96, PixelFormats.Default);
targetBitmap.Render(dVisual);
WriteableBitmap wBitmap = new WriteableBitmap(targetBitmap);
image.Source = wBitmap;
あなたはImageSourceを読み込んでいますが、あなたはWinFormsビットマップの読み込みを強くお勧めしました。とにかく、[WriteableBitmapEx](https://writeablebitmapex.codeplex.com/)を見てみたいかもしれません。 – Clemens
私はWinFormsビットマップが欲しいと覚えていません。私はWinFormsを使ったことがありませんか? – Sting
2日前の前回の質問では、System.Drawing名前空間のクラスを使用しないように伝えようとしていましたが、成功していないWinFormsだからです。あなたが間違って受け入れた答えを編集しなければならなかった。 – Clemens