2010-12-05 3 views
1

У меня есть несколько кнопок, каждый из которых имеет PNG-изображение размером 32x32 пикселя. Странно, что обе кнопки показывают разные размеры (да, я трижды проверил, что значки действительно 32x32!). Кнопка секунд выглядит так, как это было бы размером 48x48 пикселей. Самое забавное, если я опускаю атрибут Stretch="None", значки масштабируются, чтобы заполнить почти весь экран.WPF: Странное растяжение изображения в кнопках

Я не могу объяснить, почему это происходит!

<ToolBar Name="toolBar1" DockPanel.Dock="Top"> 
     <Button Name="importButton" ToolTip="Import" Click="importButton_Click"> 
      <Image Source="Icons/Import.png" Stretch="None" /> 
     </Button> 
     <Button Name="toggleDetails" ToolTip="Details for Item" Click="toggleDetails_Click"> 
      <Image Source="Icons/maximize.png" Stretch="None" /> 
     </Button>   
    </ToolBar> 

    <StackPanel Name="stackPanel1" DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,5,0,5"> 
     <Label Name="label2" Content="Find"></Label> 
     <TextBox Name="tags" Width="400" KeyDown="tags_KeyDown" /> 
     <Button ToolTip="Find" Name="findItemsButton" Click="findItemsButton_Click"> 
      <Image Source="Icons/xmag.png" Stretch="None" /> 
     </Button> 
     <CheckBox Content="Show Closed" Name="showClosedItemsCheckBox" VerticalAlignment="Center" Margin="10,0,0,0" Click="showClosedItemsCheckBox_Click" /> 
    </StackPanel> 
    <TabControl Name="tabControl" TabStripPlacement="Top"> 

    </TabControl> 

</DockPanel> 

ответ

5

два изображения, вероятно, имеют разные ПИ.

+0

Как я могу избежать этого масштабирования и показать изображение с его исходным разрешением? – codymanix 2010-12-05 11:33:59

+0

@ Коды: вы можете установить `Width` и` Height` явно. – SLaks 2010-12-05 13:59:17

2

Чтобы следить за SLaks Ответ: Для того, чтобы использовать размеры пикселя изображения независимо от DPI вы можете связать ширину и высоту в PixelWidth и PixelHeight Источника, как этот

<Button Name="toggleDetails" ToolTip="Details for Item" Click="toggleDetails_Click"> 
    <Image Source="Icons/maximize.png" 
      Stretch="None" 
      Width="{Binding RelativeSource={RelativeSource Self}, Path=Source.PixelWidth}" 
      Height="{Binding RelativeSource={RelativeSource Self}, Path=Source.PixelHeight}"/> 
</Button> 
4

Если у вас есть set Stretch="None" для Image, и он по-прежнему выглядит больше/меньше/размытым, то это, вероятно, из-за несоответствия DPI.

Например, PNG-файлы хранят DPI. Windows имеет определенный DPI. Проверьте DPI системы и проверьте PNG DPI.

В Photoshop вы можете перейти на Image -> Image Size, и на нем отобразится окно точек/дюймов. Вы также можете использовать его для изменения DPI. Убедитесь, что вы отключили галочку Resample Image, чтобы изменить только DPI. Вам необходимо использовать диалог Save for Web для сохранения этого изменения, потому что нормальный Save As не сохранит эту информацию.

enter image description here

В моем случае, я имел PNG файл с размером 24x24, и DPI 72.009 и моя система по умолчанию DPI. Изображение выглядело больше и размыто, теперь это нормально после настройки PNG DPI с 72.009 до 72 с помощью Photoshop и с использованием Save for Web.

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