2016-08-03 4 views
1

Я испытываю очень странную вещь: а TreeView содержит элементы (изображения), объявил этот путь в XAML:Размера изображения в TreeView зависит от цвета изображений битного

<ControlTemplate x:Key="ImageTemplate"> 
    <Image VerticalAlignment="Top" 
      Visibility="{Binding IsImageVisible,Converter={StaticResource BoolToVisibility}}" 
      RenderOptions.BitmapScalingMode="NearestNeighbor" 
      SnapsToDevicePixels="True" 
      Stretch="None"> 
     <Image.Source> 
      <BitmapImage UriSource="c:\\imageBMP4.bmp" /> 
      <!-- <BitmapImage UriSource="c:\\imageBMP8.bmp" /> --> 
      <!-- <BitmapImage UriSource="c:\\imageBMP24.bmp" /> --> 
      <!-- <BitmapImage UriSource="c:\\imageBMP32.bmp" /> --> 
      <!-- <BitmapImage UriSource="c:\\imagePNG8.png" /> --> 
      <!-- <BitmapImage UriSource="c:\\imagePNG24.png" /> --> 
      <!-- <BitmapImage UriSource="c:\\imagePNG32.png" /> --> 
      <!-- <BitmapImage UriSource="c:\\imageJPG24.jpg" /> --> 
     </Image.Source> 
    </Image> 
</ControlTemplate> 

Всех изображения 640 * 480, заполненный с сине-белыми горизонтальными 1 пиксельными линиями.

Что я испытываю, если я использую 4 или 8 бит растровые изображения (bmp), они отображаются отлично, пиксель в пиксель на экране размером 640 * 480 в дереве. (однако, прокрутка дерева до конца вызывает проблемы рендеринга, если другие изображения в дереве, см: TreeView/ScrollView rendering bug with bitmaps?) Рендеринг изображения (8 бит BMP) в дереве (половина размера,):

enter image description here

Однако, если я перехожу к 24 или 32-битовому изображению (bmp/​​png/jpg), они устанавливаются на 853 * 640 (размер оригинала 1,33 *), таким образом, отображаются наклонены/размыты. (однако, в этом случае, прокрутка дерева до конца работает отлично, никаких проблем рендеринга) визуализации изображений (24 бит BMP) в дереве (половина калибровки):

enter image description here

Что такое поведение, и почему? Простое изменение битовой глубины исходного изображения, почему изменяется размер рендеринга изображения?

+0

Я думаю, что это может быть причиной: «Собственно, я видел это регулярно с изображениями PNG. По-видимому, разрешение по умолчанию для PNG равно 72dpi, в то время как разрешение экрана по умолчанию в WPF составляет 96 точек на дюйм. WPF старается учесть это, создавая растровые изображения png, масштабируемые до 133% от их размера пикселей, что является технически правильным, но обычно не то, что пользователь хочет. Вы можете использовать gif или jpg вместо этого, или вы можете комбинировать изображение с LayoutTransform, масштабируя его до 0,75 его размера, или просто придерживайтесь явно настроек размера элемента управления изображением. ' – Zotyi

ответ

0

Хорошо, у меня возникла проблема: DPI по умолчанию - 96, а мои растровые изображения - 72. За исключением 8 и 4 бит, они были неуказаны (в этом случае рассматривался по умолчанию 96). Я преобразовал растровые изображения в 96dpi и больше не изменял размер. Для получения дополнительной информации см. Комментарий по вопросу.

Смежные вопросы