【问题标题】:RenderTargetBitmap and DPIRenderTargetBitmap 和 DPI
【发布时间】:2011-08-09 04:35:14
【问题描述】:

我不明白为什么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(通过web.archive.org

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.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

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?

【问题讨论】:

    标签: c# wpf rendertargetbitmap


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我不确定我是否理解你。我当然知道系统使用什么 DPI。另外,我认为不假设实际系统 dpi 为 96 是很正常的。我的问题是何时可以忽略系统 dpi 以及何时/为什么要根据 dpi 调整图像的大小.如前所述,有时人们似乎会根据 dpi 调整图像大小,而有时则不会。
    • 我认为你做了一个错误的假设:图像的 dpi 与当前系统 dpi 无关。图像的 dpi 指定应如何使用/理解图像中的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    相关资源
    最近更新 更多