Gibt es eine Möglichkeit, Pfade in Kairo zu erstellen, indem Sie zwei Pfade durch Boolesche Operationen wie Union, Difference und Intersection kombinieren? Ich arbeite an einer Vektorgrafik-Anwendung, die Kairo zum Rendern verwendet und möchte meinen Benutzern die Möglichkeit geben, Pfade auf diese Weise zu kombinieren, aber ich kann in Kairo keine Möglichkeit finden, dies zu tun.Boolesche Operationen auf Cairo-Pfaden?
Antwort
Die Kombination von Pfaden mit Operatoren macht für mich keinen Sinn. Was bekommen Sie von "Linie UND Kurve ODER Bogen"?
Stattdessen können Sie compositing operators unter Verwendung cairo_set_operator()
anwenden: Es wird festgelegt, wie der aktuelle Ziehvorgang (wobei cairo_fill()
, cairo_stroke()
oder was auch immer) soll mit dem alten Inhalt der Oberfläche gemischt werden.
Ich habe keinen Weg gefunden, dies mit den Cairo-Bibliotheken zu tun. Aber es ist eine Funktion, nach der ich auch gesucht habe. Wäre definitiv hilfreich, wenn (zum Beispiel) die Kombination von zwei Pfaden streichen würde - Compositing-Operatoren, die von Ntd erwähnt werden, scheinen das nicht zu können.
In der Zwischenzeit versuche ich, Skripte für Inkscape zu schreiben, und inkscape die Vereinigung/Differenzierung machen lassen. Akzeptabel für das Problem, an dem ich arbeite, aber definitiv nicht für Ihr. Hattest du Glück, entweder mit Kairo oder einer anderen Bibliothek? Nach ein paar Tagen Googeln scheint es nicht trivial zu sein:/
PS - Pfad Schnittpunkt/kombinieren/Overlay ist aufgeführt auf der cairo site als mögliches sommercode-projekt http://cairographics.org/summerofcode/ideas/ – ImAlsoGreg
- 1. Boolesche Operationen auf Rechteckpolygonen
- 2. Boolesche Operationen auf scipy.sparse-Matrizen
- 3. Boolesche Operationen auf SVG Pfade
- 4. Haskell: Nicht-strikte boolesche Operationen
- 5. Mathematische Operationen mit Boolesche Werte in PHP
- 6. Boolesche Logik (Reihenfolge der Operationen) A und B oder C
- 7. Logische Operationen auf Multiple-Modulus-Operationen optimiert?
- 8. Generische Operationen auf Sequenzen
- 9. Bit-Operationen auf Enum
- 10. Atomare Operationen auf Schwimmern
- 11. setzt Operationen auf Listen
- 12. Operationen auf Python-Hashes
- 13. Operationen auf beliebigen Werttypen
- 14. Atomare Operationen auf `unique_ptr`
- 15. Vergleiche boolesche WHERE-Prädikate gegen boolesche Werte
- 16. Javascript Kurvenbibliothek mit booleschen Operationen
- 17. sql injection Boolesche Syntax
- 18. Boolesche Rekursionsmethode
- 19. Boolesche Typen
- 20. binäre Operationen auf Flags Enumeration
- 21. LINQ Operationen auf Lambda-Gruppierung
- 22. Operationen auf Rulle von iCal
- 23. Sequelize-Operationen auf schreibgeschütztem Schema?
- 24. Array-Operationen auf DASK-Arrays
- 25. Parallele Operationen auf Kotlin Sammlungen?
- 26. Warten auf alle asynchronen Operationen?
- 27. Lange Operationen auf Activity onCreate()
- 28. Binäre Operationen auf Erlang-Binärdateien?
- 29. Sparse-Matrix-Operationen auf CUDA
- 30. Capturing Ausnahmen auf asynchronen Operationen
Ein Beispiel für das, was ich meine, ist die Art, wie Inkscape Pfade durch boolesche Operationen kombiniert: http://www.usinginkscape.com/node/34. Ich vermute, dass die meisten dieser Effekte durch eine Reihe von Compositing-Operatoren erreicht werden können, mit der Ausnahme, dass Orte, an denen sich die Pfade der zwei Figuren schneiden, nicht notwendigerweise richtige Linienverbindungen haben. –
Ich verstehe immer noch nicht die Frage: Inkscape selbst verwendet Kairo seit Version 0.46: http://wiki.inkscape.org/wiki/index.php/Release_notes/0.46#Speed_and_interactivity – ntd