我不明白为什么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 + empty image
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.ericsink.com/wpf3d/3_Bitmap.html
http://dedjo.blogspot.com/2008/05/performance-appliance-of.html
How to render a checked CheckBox (Aero theme) to a 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?
答案 0 :(得分:3)
默认值96只是桌面显示器中最常用/最常用的dpi。但那会/可能会改变。
如果您知道在编译程序期间位图必须具有的dpi,您可以将其设置为所需的值(例如96)说实话,我会使用常量来做到这一点但是它在运行时归结为同样的事情。
如果您不知道图像的分辨率,则不应对dpi进行硬编码。
顺便说一下:确保始终正确设置图像的dpi。