Bild Hinzugefügt WPF canvas Größe ändert

Als Teil einer Anwendung, ich habe ein canvas-Objekt <Canvas Name="canvas"/> in denen ich versuche, legen Sie die Komponenten einer Uhr wie folgt

//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);

Dem ersten Bild (bg) richtig angezeigt, aber der zweite (hand) angezeigt wird, zu skalieren (Originalgröße 5 x 61 Pixel, verhören Bildgröße nach der Erstellung zeigt, hat es sich 6.66 x 84.02 Anzeige-Einheiten)
(bg original ist 130 x 130 Pixel und zeigt wie 130.4 in Anzeige-Einheiten)

Alle Antworten auf meine Anfrage, die ich finden kann (StackOverflow und Google) empfehlen die DPI-Einstellung des Bildes, aber meine beiden Bilder sind 96 DPI (je nach Farbe)
Ich habe versucht, verschieben Sie das Bild Deklarationen in der XAML (keine langfristige Lösung), aber das macht keinen Unterschied. Ich habe versucht, die änderung der Reihenfolge, in der ich das einfügen von Bildern ohne Effekt. Ich habe die Leinwand Breite/Höhe ausdrücklich in das XAML - kein Effekt.
Ich hab die Größe des Bildes explizit - wieder keine Wirkung.

Kann mir jemand sagen, was Los ist?

Hinzugefügt: Kompiliert mit .net 4 auf windows7 64bit

Gelöst:
Farbe war in der Berichterstattung eine falsche DPI-Einstellung für das Bild.
Paint.Net gab mir den richtigen Wert und, indem Sie diese auf 96 DPI das problem wurde gelöst,

  • Gibt es einen Grund, Sie schreiben diese im code anstelle von XAML?
  • Die meisten Einstellungen werden dynamisch. Die Hände werden gedreht, so dass Sie angemessene und second-hand ist optional. Geht vorwärts, ich erwarten, dass verschiedene optionale Komponenten, die Sie beschlossen, ein Programm.
  • Hinzugefügt: ich habe gerade versucht, indem die beiden Bilder in der XAML - - das Gleiche problem
  • Entweder posten Sie Ihre Lösung als Antwort und akzeptieren Sie es, oder löschen Sie die Frage, ob Sie denken, es ist nicht nützlich zu sein, um jemand anderes.
  • Ich habe jetzt gepostet Lösung als Antwort. Wird es akzeptieren, sobald meine rep' ermöglicht
InformationsquelleAutor Taoist | 2012-01-24
Schreibe einen Kommentar