Hi Leute,
ich versuche seit Tagen mein InkCanvas irgendwie zu überreden, Shapes wie Rectangle od. Ellipse in seine StrokeCollection aufzunehmen. Ziel ist es, dass ich die Shapes wie die normalen Freihandzeichnungen mit den InkCanvas-eigenen Tools erasen kann etc..
Ein Hinzufügen von selbstgebastelten Strokes ist ja einfach möglich, eine Linie od. vllt. sogar ein Rechteck kann ich dann als "Freihandzeichnung" wieder löschen. Aber wie bekomme ich z.B. eine Ellipse da rein?
Hallo csOffroad,
was meinst du mit easen? Soll das InkCanvas automatisch erkennen, was gemalt worden ist? Wenn du einfach nur ein Shape hinzufügen möchtest, dann kannst du das mit ink.Children.Add
machen. Beachte, dass ink der Name des Canvases ist.
Auf Seiten wie CodeProject oder CodePlex findest du bestimmt schon fertige Implementierungen. Das nur als Tipp am Rande.
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
Hi zero_x,
klar kann ich der Children-Collection Shapes hinzufügen - wie beim normalen Canvas auch. Allerdings werden diese immer hinter ink und highlighter des InkCanvas gerendert und lassen sich auch nicht per ZIndex hervorholen. Weiterhin kann ich die Shapes dann auch nicht mit dem InkCanvas-Eraser (Radiergummi) löschen, da das InkCanvas nur seine eigenen Freihandzeichnungen löschen will.
Ich muss diesen alten thread nochmal aufnehmen.
Ich stehe vor exakt der gleichen problematik. Leider gibt es hier bisher keinen brauchbaren Tipp.
Hat in der Zwischenzeit noch irgendjemand einen Tipp, wie man z.B. eine simple Ellipse dem InkCanvas-Stroke hinzufügen kann?
(Children.Add ist keine Lösung, da später nicht mit den Hausmitteln von InkCanvas bearbeitbar).
Vielen Dank im Voraus.
Hallo,
Zeichne deine Objekte halt selber. Du kannst manuell neue Strokes erstellen und im Konstruktor musst du entsprechend die Punkte der Zeichnung mitgeben. Die so erstellten Strokes kannst du dann in die Strokes Collection vom InkCanvas packen.
Baka wa shinanakya naoranai.
Mein XING Profil.
vielen Dank für die Antwort.
Aber: Muss ich verstehen, was Du meinst? Was meinst Du mit "selber malen".
Ich möchte es aber mit Code tun. ... damit es auch ein Kreis wird.
Hallo,
war bissle blöd vielleicht formuliert, aber genau das hab ich doch beschrieben. "selber zeichnen" war gedacht im Sinne als Gegenteil von "Usergezeichnet".
Ich habe ja beschrieben wie du Strokes erstellen kannst, und was dazu nötig ist. Das bissle Mathematik um Punkte einer Ellipse, bzw. Kreis zu berechnen ist nun echt nicht das Problem.
Baka wa shinanakya naoranai.
Mein XING Profil.
Klar kann ich den Kreis selbst approximieren und die Punkte des Umfangs berechnen (bin als Krücke gerade dabei es so zu machen).
Aber ist das wirklich erforderlich - ich kanns einfach nicht glauben. Gibt es wirklich keine Möglichkeit Geometrie-Objekte in einen Stroke zu überführen?
Gibt es wirklich keine Möglichkeit Geometrie-Objekte in einen Stroke zu überführen? Doch, genau das was du grad machst 😃 Wieso sollte das eine Krücke sein?
Strokes beschreiben Freihandzeichnungen anhand von Punktsammlungen. Da ist keinerlei Information vorhanden, wie die Semantik ist. Auf der anderen Seite hat man Geometrien, welche Objekte anhand von geometriespezifischen Eigenschaften beschreiben, man hat aber keine Informationen wie die einzelnen Punkte der Geometrie sind, auch weil das ja überhaupt abhängig davon ist, wie genau man das bestimmen will. Eine Geometrie hat unendlich viele Punkte.
Das sind zwei völlig unterschiedliche Konzepte, auch wenn die Darstellung dann ähnlich aussieht. Wenn du ein Konzept davon in ein anderes überführen willst, musst du halt bissle selber Hand anlegen.
Baka wa shinanakya naoranai.
Mein XING Profil.
Naja, das ist mir schon klar. Und danke für Deine Hilfsbereitschaft!
Aber ich kann eben gerade nicht nachvollziehen (obwohl wir beide ggf. nichts dran ändern können), wieso es keine Unterstützung dafür gibt, eine ggf. recht aufwendig erstellte Grafik auf die "dumme" Pixelgrafik der Stroke zu rendern. Nach diesem Rendern benötige ich die Semantik doch auch gar nicht mehr.
Als nächstes hätte ich z.B. gern gestrichelte Linien oder eine Bitmap. Beide möchte ich dann (nach dem "rendern") mit den gleichen Werkzeugen bearbeiten, wie die Freihandzeichnung. Aber das alles "per Hand" zu überführen ???!!!
Oder ist die InkCanvas der falsche Container?