2011-02-08 8 views
0

System.Drawing.Bitmapオブジェクトを取得してWPF Canvasでレンダリングする関数を実装しようとしています。レンダリングする前に、ビットマップをトリミングして結合する必要があります。System.Drawing.Bitmap領域からWPFでイメージを作成してサイズを変更する

環境:System.Drawing.Bitmapオブジェクトサイズ800×600ピクセルフォーマットRGB24

目標の:画像を表示するWPFアプリケーションが.NET 3.5 SP1

入力上で実行されています入力ビットマップの2つのストライプから構成されています(1行で)。ストライプは2つのビットマップの半分 - (0,0,800,300)と(0,300,800,600)です。後で、イメージを上下に拡大縮小したいと思っています。

私は既にGDIとGraphics.DrawImage(ビットマップオブジェクトにレンダリング)を使用してソリューションを実装しましたが、パフォーマンスを向上させたい(この機能は毎秒30回呼び出すことができます)。

これをWPFで実装する方法はありますか?WPFウィンドウでイメージをレンダリングするとしますか?

答えて

0

私がこれまでWriteableBitmap、このようなものを使用していた最善の解決策:

void Init() 
{ 
    m_writeableBitmap = new WriteableBitmap(DesiredWidth, DesiredHeight, DesiredDpi, DesiredDpi, PixelFormats.Pbgra32, null); 
{ 

void CopyPixels(System.Drawing.Bitmap frame, Rectangle source, Point destBegin) 
{ 
    var bmpData = frame.LockBits(source, ImageLockMode.ReadOnly, frame.PixelFormat); 
    m_writeableBitmap.Lock(); 

    var dest = new Int32Rect(destBegin.X, destBegin.Y, bmpData.Width, bmpData.Height); 
    m_writeableBitmap.WritePixels(dest, bmpData.Scan0, bmpData.Stride * bmpData.Height, bmpData.Stride); 

    m_writeableBitmap.Unlock(); 
    frame.UnlockBits(bmpData); 
} 

CopyPixelsは、私は私の質問(2つのストライプ)で説明したユースケースのために二回呼び出されます。

+0

私はWPFの初心者です。参考になるチュートリアル用のリンクを教えてください。私は、主にこれ以上のテキストを持つビットマップイメージの作成に取り組んでいます。私はこれに非常にthnakfulになります –

関連する問題