Как часть приложения, у меня есть объект холста <Canvas Name="canvas"/>
, в который я пытаюсь вставить компоненты часов следующим образом
// Add Background
Image bg = new Image();
bg.SetValue(Canvas.ZIndexProperty, 0);
bg.Source = new BitmapImage(new Uri("images/background.png", UriKind.Relative));
canvas.Width = bg.Source.Width;
canvas.Height = bg.Source.Height;
canvas.Children.Add(bg);
// Add second hand
Image hand = new Image();
hand.SetValue(Canvas.ZIndexProperty, 10);
hand.Source = new BitmapImage(new Uri("images/hand.png", UriKind.Relative));
canvas.Children.Add(hand);
Первое изображение (bg) отображается правильно, но второе (рука) выглядит масштабированным (исходный размер составляет 5 x 61 пиксель, при опросе размер изображения после создания показывает, что оно стало 6,66 x 84,02 единиц отображения)
(оригинал bg составляет 130 x 130 пикселей и отображается как 130,4 в единицах дисплея)
Все ответы на мой запрос, которые я могу найти (StackOverflow и Google), предполагают настройку DPI для изображения, но оба моих изображения имеют разрешение 96 DPI (согласно Paint).
Я попытался переместить объявления изображений в XAML (не долгосрочное решение), но это не имеет значения. Я попытался изменить порядок, в котором я вставляю изображения без эффекта. Я явно установил ширину / высоту холста в XAML - никакого эффекта.
Я установил размер изображения явно - опять нет эффекта.
Кто-нибудь может сказать мне, что происходит?
добавлено: скомпилировано с использованием .net 4 на windows7 64bit
Решено:
Paint сообщает о неверной настройке DPI для изображения.
Paint.Net дал мне правильное значение, и, изменив его на 96 DPI, проблема была решена