Подтвердить что ты не робот

RenderTargetBitmap и DPI

Я не понимаю, почему параметры DPI на RenderTargetBitmap используются так, как они, кажется, используются. Довольно часто я вижу код, который касается нестандартных настроек 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

Как визуализировать проверенную CheckBox (тему Aero) на RenderTargetBitmap?

или

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

Примеры:

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

Когда вы делаете одно и другое?

Можно ли сказать, что вы всегда должны настраивать размер растрового изображения (как в первом примере), если позже вы захотите отобразить изображение с тем же размером, что и элемент управления внутри вашего приложения?

И что вы, вероятно, должны использовать фиксированный dpi при 96, сохраняя его в файле, или если вы используете разные dpi, не изменяете ширину и высоту?

Скажем, я хочу сохранить изображение элемента управления в файл с фиксированным размером. Могу ли я затем установить dpi или использовать только 96?

4b9b3361

Ответ 1

Значение по умолчанию 96 - это самый общий/используемый тэп на рабочем столе. Но это может измениться.

Если вы знаете, какие растровые изображения должны иметь растровые изображения во время компиляции вашей программы, вы можете установить его на нужное значение (например, 96). Будьте честны, я бы использовал константу для этого, но это сводится к тому же во время выполнения.

Если вы не знаете, при каком разрешении потребуется изображение, вы не должны жестко закодировать dpi.

Кстати: убедитесь, что вы всегда правильно задали dpi.