c# – 调整位图图像大小

我想要保存的图像尺寸更小.
如何调整大小?
我使用这个代码来重绘图像:
Size size = new Size(surface.Width,surface.Height);
surface.Measure(size);
surface.Arrange(new Rect(size));
// Create a render bitmap and push the surface to it
rendertargetBitmap renderBitmap =
    new rendertargetBitmap(
        (int)size.Width,(int)size.Height,96d,PixelFormats.Default);
renderBitmap.Render(surface);

BmpBitmapEncoder encoder = new BmpBitmapEncoder();
// push the rendered bitmap to it
encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
// save the data to the stream
encoder.Save(outStream);

解决方法

您的“表面”视觉是否具有缩放能力?您可以将它包装在一个ViewBox中,如果没有,然后渲染您想要的大小的ViewBox.

当您调用测量和排列表面时,您应该提供您想要位图的大小.

要使用ViewBox,请将代码更改为以下内容

ViewBox viewBox = new ViewBox();
Size desiredSize = new Size(surface.Width / 2,surface.Height / 2);

viewBox.Child = surface;
viewBox.Measure(desiredSize);
viewBox.Arrange(new Rect(desiredSize));

rendertargetBitmap renderBitmap =
    new rendertargetBitmap(
    (int)desiredSize.Width,(int)desiredSize.Height,PixelFormats.Default);
renderBitmap.Render(viewBox);

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...