- 題名: DrawingContextでの画像表示
- 日時: 2010/04/02 15:42:20
- ID: 26656
- この記事の返信元:
- (なし)
- この記事への返信:
- [26657] Re[1]: DrawingContextでの画像表示2010/04/02 15:57:57
- ツリーを表示
■No26657に返信(Hongliangさんの記事)
> BitmapFrame.Create(Stream) は、ファイル形式の画像データから BitmapFrame を作成する物です。
> ピクセルデータから BitmapSource を生成するには、BitmapSource.Create(Int32, Int32, Double, Double, PixelFormat, BitmapPalette, IntPtr, Int32, Int32) などを使用して下さい。
早々の回答ありがとうございます。
ご指摘いただいたとおりに修正したのですが、
やはり例外が発生します。
C++で作成されたテストプログラムでは正しく表示されるので
データ自体に不備はないようです。
申し訳ありませんが今一度よろしくお願いします。
BitmapSource image = BitmapFrame.Create(255, 255,
96, 96,
PixelFormats.Gray8,
BitmapPalettes.Gray256,
(IntPtr)m_ImageBuffer,
nSize,
255);
分類:[.NET]
お世話になります。 現在WPF+C#で開発しております。 別プロセスが取得した画像情報をByte*型の領域に取り込んで 画面上に表示しようとしています。 この画像情報というのはグレースケールのBitmap画像のヘッダを取り去ったデータだけの部分です。 現在ソースは以下のようになっているのですが image = BitmapFrame.Create(ms); 部分で例外が発生してしまいます。 このような場合はどうすれば良いのかご教授いただけないでしょうか? よろしくお願いします。 XAML側 <Image x:Name="imgVideo" Stretch="Fill" Cursor="Cross"> <Image.Source> <DrawingImage> <DrawingImage.Drawing> <DrawingGroup x:Name="drawingGroupVideo"/> </DrawingImage.Drawing> </DrawingImage> </Image.Source> </Image> C#側 Byte* Buff; // 画像情報のポインタ int nSize; // 画像情報のサイズ private void DrawVideo() { byte[] WkImage = new byte[nSize]; Marshal.Copy(WkImage, 0, (IntPtr)Buff, WkImage.Length); MemoryStream ms = new MemoryStreamyWkImage); BitmapSource image = BitmapFrame.Create(ms); ms.Close(); var image = CreateImage(); if(image == null) { return; } var dc = drawingGroupVideo.Open(); dc.DrawImage(image, new Rect(0, 0, 255, 255)); : : dc.Close(); }