RenderTargetBitmap和DPI

我不明白为什么RenderTargetBitmap上的DPI参数按照它们似乎被使用的方式使用。 通常我会看到通过调整基于DPI的图像大小来处理非标准DPI设置的代码,如下所示:

new RenderTargetBitmap ((int) (width/96d)*dpi, (int) (height/96d)*dpi, dpi, dpi, PixelFormats.Pbgra32);

例子:

http://blogs.msdn.com/b/jaimer/archive/2009/07/03/rendertargetbitmap-tips.aspx

ContentControl + RenderTargetBitmap +空图像

http://social.msdn.microsoft.com/forums/en-US/wpf/thread/984da366-33d3-4fd3-b4bd-4782971785f8/

其他时候,dpi似乎被硬编码为96或不同的值,如下所示:

new RenderTargetBitmap (width, height, 96, 96, PixelFormats.Pbgra32);

例子:

http://www.i-programmer.info/programming/wpf-workings/538-rendertargetbitmap-visual-vector-to-bitmap.html

http://www.ericsink.com/wpf3d/3_Bitmap.html

http://dedjo.blogspot.com/2008/05/performance-appliance-of.html

如何将选中的复选框(Aero主题)渲染到RenderTargetBitmap?

要么

new RenderTargetBitmap (width, height, 120, 96, PixelFormats.Pbgra32);

例子:

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.rendertargetbitmap.aspx

你什么时候做一个和另一个?

如果您稍后想要在应用程序内显示与控件大小相同的图像,我是否应该始终调整位图的大小(如第一个示例中所示)?

而且,在将文件保存到文件时,您可能应该使用96分辨率的固定dpi,或者如果使用不同的dpi,则无法调整宽度和高度?

假设我想将控件的图像保存为固定大小的文件。 那么我会设置dpi还是只使用默认的96?


默认的96是桌面显示器的最普通/最常用的dpi。 但是这可能会改变。

如果你知道在编译你的程序时位图必须有多少dpi,你可以将它设置为所需的值(例如96)。老实说,我会使用一个常量来做到这一点,但它在运行时会归结为相同的东西。

如果您不知道以何种分辨率需要图像,则不应对dpi进行硬编码。

顺便说一下:确保您始终正确设置图像的dpi。

链接地址: http://www.djcxy.com/p/26879.html

上一篇: RenderTargetBitmap and DPI

下一篇: WPF more efficient Render() Visual/Control to a bitmap