Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Unscharfe Darstellung von ContentControl auf Canvas
Camouflagezebra
myCSharp.de - Member



Dabei seit:
Beiträge: 10
Herkunft: Österreich

Themenstarter:

Unscharfe Darstellung von ContentControl auf Canvas

beantworten | zitieren | melden

Hallo,

Ich möchte auf einem Canvas Etiketten darstellen können, habe jedoch Probleme mit der Darstellung.

Die Etiketten werden als String angegeben, der von der Geometry-Klasse(System.Windows.Media.Geometry) geparst wird, damit am Ende ein Path(System.Windows.Shapes.Path) rauskommt.
Beispielsweise 2*2 Etiketten mit den Maßen 40*30:
M0,0 H40 V40 H0 Z M40,0 H80 V40 H40 Z M0,40 H40 V80 H0 Z M40,40 H80 V80 H40 Z

Im Anschluss habe ich den Path dann als Content für ein ContentControl-Objekt gesetzt und dieses dann dem Canvas hinzugefügt.

Blödeweiße wird das erzeugte Bild bei größeren Etikettblöcken immer unschärfer zur Mitte hin (Im Anhang ein Screenshot dazu).

Wie kann ich das vermeiden?

Hier noch den Code für die Erstellung des ContentControl/Path


                Path label = new Path();
                ContentControl cc = new ContentControl();
                label.Stroke = Brushes.Black;
                label.StrokeThickness = 1;
                label.SnapsToDevicePixels = true;
                label.Stretch = Stretch.Fill;
                label.StrokeLineJoin = PenLineJoin.Miter;
                label.Data = Geometry.Parse(getGeometry()); // <---- getGeometry() stellt den String bereit, den ich schon im obrigen Beispiel angeführt habe 
                label.Fill = Brushes.Transparent;
                cc.SnapsToDevicePixels = true;
                cc.Width = label.Data.Bounds.Width;
                cc.Height = label.Data.Bounds.Height;
                cc.Content = label;



Im Sceenshot habe ich mal einen solchen Etiketten-Block auf die Canvas gezeichnet und mit der Bildschirmlupe rangezoomt.

greetz
Zebra
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Camouflagezebra am .
Attachments
private Nachricht | Beiträge des Benutzers