我有一种情况,其中有一个图像画布,并在其上放置了多个画布控件,并且每个画布上可能都有多个控件(椭圆,线条等)。什么是将所有这些画布控件保存到一个图像的最好/最有效的方法?我假设WritableBitmap,但这将如何与多个画布控件一起工作?一个给定的是每个画布将是相同的大小。将多个画布控件另存为silverlight/wpf中的图像
编辑:
这是我试过的。我也尝试过使用原始图像的dpi,这使我获得了微小的结果。
BitmapSource bms = (BitmapSource)this.ctlImage.Source;
Matrix m = PresentationSource.FromVisual(this.ctlImgCanvas).CompositionTarget.TransformToDevice;
RenderTargetBitmap rtb = new RenderTargetBitmap(bms.PixelWidth, bms.PixelHeight, m.M11 * 96.0, m.M22 * 96.0, PixelFormats.Pbgra32);
rtb.Render(this.ctlImgCanvas);
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(rtb));
encoder.Save(memStream);
这适用于WPF。我最终使用ImageTools进行Silverlight。 – PhilBrown 2012-03-15 17:26:59
RenderTargetBitmap只会与PixelFormats.Pbgra32一起构建,而我的图像最终是正确的高度和宽度,但实际图像在图像的左上角收缩。任何想法为什么? – PhilBrown 2012-03-15 18:30:26
显示您的代码。你使用什么编码器? – NVM 2012-03-16 13:14:55