PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WPF: Shapes in Canvas werden unterschiedlich gezeichnet, obwohl sie gleich sind


Elemental
2016-04-08, 06:53:49
Hallo,
ich habe ein seltsames Verhalten in WPF bzw. ich weiss nicht wie man das nennt und ob es normal ist.

In einen Canvas werden mehrere Kreise gemalt. Alle Kreise sind gleich groß.
Wenn man jedoch weiter weg zoomed, dann werden die Kreise nicht mehr gleich groß gezeichnet.

siehe screenshots

Kann man dagegen etwas machen?

Monger
2016-04-09, 10:54:29
Mein erster Instinkt sagt mir: Aliasing Probleme?
Was für WPF eigentlich ungewöhnlich ist, weil Anti-Aliasing ist eigentlich eher der Standardfall in WPF.

Ich kenn den Code nicht. Aber Canvas ist eher so eine Malfläche, also pixelorientiert. Das sind keine echten Ellipsen-Objekte die du da renderst, nicht wahr? Würdest du Ellipsen in einem passenden Layout Manager (z.B. Grid) anordnen, würde ich vermuten dass du keine Aliasing Probleme in dem Umfang haben dürftest.

https://msdn.microsoft.com/de-de/library/aa970908(v=vs.85).aspx

PatkIllA
2016-04-10, 12:28:43
Canvas ist ein Panel. Nicht zu vergleichen mit dem Canvas in z.B. JavaScript.
Ich würde mal mit SnapsToDevicePixels, UseLayoutRounding und mit den Mittelpunkt Koordinaten rumspielen. Da kann schon mal ein Pixel Unterschied in Größe und Position rumkommen.

Bei sowas kann man auch schon mal überlegen ein eigenes Custum Element zu schreiben und OnRender zu überschreiben.

Elemental
2016-04-10, 21:54:21
Ich verwende zum zeichnen dieses Control, weil normal kann ma ja bein Canvas nicht zoomen:
http://www.codeproject.com/Articles/85603/A-WPF-custom-control-for-zooming-and-panning

SnapToDevicePixels und Anti-Aliasing abschalten hab ich auch schon probiert, aber hat nicht geholfen.