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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Problem gelöst: Farbe war in der Berichterstattung eine falsche DPI. Die Verwendung einer alternativen Farbe-Paket (Paint.net) zeigte, dass die DPI anders war. Korrigieren Sie diese Einstellung behebt das Problem.
Sie haben nicht
Width
undHeight
für das zweite Bild und dieses war wahrscheinlich das Problem verursacht.Sie können auch versuchen, deaktivieren Sie Bild Strecken, indem man eine Zeile (sollte zumindest nicht das Bild skalieren, auch wenn das Steuerelement skaliert wird):
Update: ich habe gerade bemerkt Du hast schon versucht die Einstellung der Dimensionen des Bildes. Versuchen Sie, wenn Sie in den code. Ich bin derzeit auf der Suche nach anderen möglichen Ursachen des Problems.
Update II: ich sehe, Du hast eine Lösung gefunden. Ich bin froh, dass du es zu arbeiten :).