.NET преобразует пиксели в точки и создает неправильный размер изображения - PullRequest
1 голос
/ 07 апреля 2011

У меня есть изображение размером 144 пикселя (я измерил размер изображения, используя irfanView и Photoshop).

Однако при открытии в окне с использованием следующего xaml ширина изображения, измеренная как параметром ActualWidth, так и одним и тем же графическим программным обеспечением, составляет 192 пикселя.

Получается, что 141 пункт = 192 пикселя (как 1pt = 1,33 пикселя).

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

Вот код:

<Window x:Class="test_image_resizing.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" WindowState="Maximized" Loaded="Window_Loaded">
    <Grid> 
        <Image 
            x:Name="test"  
            VerticalAlignment="Top" 
            HorizontalAlignment="Center" 
            Stretch="None" 
            Source="/test%20image%20resizing;component/Resources/Test.png" />
    </Grid>
</Window>

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    MessageBox.Show("test=" + test.ActualWidth.ToString());
}

Ответы [ 2 ]

4 голосов
/ 07 апреля 2011

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

Если ваше изображение сохранено с другим разрешением, то WPF отобразит его в «истинном» размере в зависимости от разрешения экрана. WPF пытается показывать изображения в их предполагаемом «дюймовом» размере, который учитывает dpi изображения.

0 голосов
/ 07 апреля 2011

Вы можете открыть изображение в Paint.net , а затем открыть изображение |Изменить размер ... диалог.Вы можете увидеть DPI и настроить его при необходимости.

...