В рамках приложения, у меня есть объект холста <Canvas Name="canvas"/>
, в который я пытаюсь вставить компоненты часов следующихизображения в WPF размера изменения холста
// 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 х 61 пиксель, запрос размера изображения после создания показывает, что он стал 6,66 х 84,02 единиц отображения) (bg оригинал 130 х 130 пикселей и показывает 130,4 дюйма дисплеи)
Все ответы на мой запрос, который я могу найти (StackOverflow и Google), предлагают набор DPI но оба изображения - 96 DPI (согласно Paint) Я попытался переместить объявления изображений в XAML (не долгосрочное решение), но это не имеет значения. Я попытался изменить порядок, в который я вставляю изображения без эффекта. Я установил ширину/высоту холста явно в XAML - никакого эффекта. Я установил размер изображения явно - снова никакого эффекта.
Может ли кто-нибудь сказать мне, что происходит?
добавил: Составлен с использованием .NET 4 на windows7 64bit
Постановили: Краски отчетности неверную DPI настройки для изображения. Paint.Net дал мне правильное значение и изменение этого 96 DPI проблема была решена
Есть ли причина, по которой вы пишете это в коде вместо XAML? –
Большинство настроек будут динамическими. Руки будут повернуты, если необходимо, а вторая - не обязательна. В будущем я ожидаю, что у вас будут различные дополнительные компоненты, которые будут решаться программно. – Taoist
Добавлено: Я только что попробовал добавить оба изображения в XAML - Та же проблема – Taoist