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 22 Etiketten mit den Maßen 4030:
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