RenderTargetBitmap и DPI - PullRequest
       22

RenderTargetBitmap и DPI

24 голосов
/ 20 апреля 2011

Я не понимаю, почему параметры 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 /рограмма / 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?

1 Ответ

3 голосов
/ 20 апреля 2011

По умолчанию 96 - это просто наиболее распространенное / используемое разрешение экрана для настольных компьютеров. Но это изменится или может измениться.

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

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

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

...