RenderTargetBitmap和DPI

Pat*_*lug 24 c# wpf rendertargetbitmap

我不明白为什么DPI参数的RenderTargetBitmap使用方式与它们的使用方式相同.通常我会通过调整基于DPI的图像大小来查看处理非标准DPI设置的代码,如下所示:

new RenderTargetBitmap ((int) (width/96d)*dpi, (int) (height/96d)*dpi, dpi, dpi, PixelFormats.Pbgra32);
Run Code Online (Sandbox Code Playgroud)

例子:

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);
Run Code Online (Sandbox Code Playgroud)

例子:

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

如何将已检查的CheckBox(Aero主题)渲染为RenderTargetBitmap?

要么

new RenderTargetBitmap (width, height, 120, 96, PixelFormats.Pbgra32);
Run Code Online (Sandbox Code Playgroud)

例子:

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

你什么时候做一个又一个?

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

并且你可能应该在96保存到文件时使用固定dpi,或者如果你使用不同的dpi而不调整宽度和高度?

假设我想将控件的图像保存到具有固定大小的文件.我还能设置dpi还是只使用默认的96?

Ern*_*rno 3

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

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

如果您不知道需要什么分辨率的图像,则不应硬编码 dpi。

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

  • 我认为你做了一个错误的假设:图像的 dpi 与当前系统 dpi 无关。图像的 dpi 指定应如何使用/理解图像中的数据。 (2认同)