2014-07-22 47 views
3

我想將圖片與覆蓋圖一起保存,在我的情況下,它是整個圖片的簡單線條。當我保存此圖像時,它不包含我的線,因此我的問題如何將此線與我的圖像合併以將兩者保存在一個文件中?如何合併一行圖像並保存在文件中?

這裏我保存的圖像代碼:

// Save image 
var encoder1 = new PngBitmapEncoder(); 
encoder1.Frames.Add(BitmapFrame.Create((BitmapSource)image.Source)); 

using (FileStream stream = new FileStream("test.png", FileMode.Create)) 
encoder1.Save(stream); 

行加入這樣的:

grid2.Children.Add(myLine); 

我怎麼能合併符合圖像同時保存兩者兼而有之?

回答

0

在WPF中有多種方法可以做到這一點。在這裏,您似乎只想將您的grid2面板的內容繪製成位圖(當然假定Image控件也是grid2的子元素)。

這很容易通過這樣的RenderTargetBitmap來完成: - 不只是一條線 -

var bitmap = new RenderTargetBitmap(
    (int)grid2.ActualWidth, (int)grid2.ActualHeight, 96, 96, PixelFormats.Default); 
bitmap.Render(grid2); 

var encoder = new PngBitmapEncoder(); 
encoder.Frames.Add(BitmapFrame.Create(bitmap)); 

using (var stream = new FileStream("test.png", FileMode.Create)) 
{ 
    encoder.Save(stream); 
} 

請注意,此解決方案可以得出任何類型的UI元素上的圖像的頂部,並將結果保存到文件中。

如果你也許只是想加載一個圖像文件,在頂部繪製一些簡單的形狀,並將其保存迴文件,你可以考慮使用WritabelBitmapEx

+0

作品完美..!謝謝 – Norick

2

你可以嘗試這樣的事:

using (Stream s = File.OpenRead("myJpeg.jpg")) 
{ 
    Image sourceImage = Image.FromStream(s); 

    Graphics canvas = Graphics.FromImage(sourceImage); 
    canvas.DrawLine(new Pen(Color.Black, 5), 0, 0, sourceImage.Width, sourceImage.Height); 
    sourceImage.Save("test.jpg"); 
} 

它吸引了來自TOPE一行留給圖像的右下角。

+0

繪製線條並不是問題,而是將線條與圖像合併 – Norick

+0

@Norick請注意,此處介紹的解決方案基於WinForms API,而不是WPF。雖然您可以在WPF應用程序中執行此操作,但不建議這樣做。 – Clemens

相關問題