2017-05-10 7 views
0

私はWPFが新しく、単純な線をビットマップにレンダリングしてPNGファイルに保存しようとしています。しかし、私は代わりに空のビットマップを得ました。PNGビットマップにWPFをどのように描画するのですか?

私は間違っていますか?

MSDNによると
void RenderLineToFile() 
{ 
    var bitmap = RenderBitMap(); 
    SaveImageToFile("image.png", bitmap); 
} 


RenderTargetBitmap RenderBitMap() 
{ 
    int bitmapWidth = 100; 
    int bitmapHeight = 100; 
    double dpiX = 72; 
    double dpiY = 72;   

    RenderTargetBitmap bm = new RenderTargetBitmap(bitmapWidth, bitmapHeight, dpiX, dpiY, PixelFormats.Pbgra32); 

    DrawingVisual drawing_visual = new DrawingVisual(); 
    using (DrawingContext drawing_context = drawing_visual.RenderOpen()) 
    { 
     Pen penBlack = new Pen(Brushes.Black, 1.0); 

     drawing_context.DrawLine(penBlack, new Point(0, 0), new Point(100, 100)); 

     bm.Render(drawing_visual); 
    }    
    return bm; 
} 

public static void SaveImageToFile(string filePath, BitmapSource image) 
{ 
    using (var fileStream = new FileStream(filePath, FileMode.Create)) 
    { 
     BitmapEncoder encoder = new PngBitmapEncoder(); 
     encoder.Frames.Add(BitmapFrame.Create(image)); 
     encoder.Save(fileStream); 
    } 
} 
+2

[MSDNによると、 "コンテンツをレンダリングする前にDrawingContextを閉じる必要があります"](http://stackoverflow.com/a/869767/815938)? 'bm.Render(drawing_visual);を取ってみてください。 'を使用しています。 – kennyzx

+0

はい、その作業! – qub1n

答えて

1

A DrawingContextでは、その内容がレンダリングされる前に...

を使用して句のbm.Render(drawing_visual);外を取ってみ閉じなければなりません。

関連する問題