J'ai un canevas html et j'aimerais y afficher une esquisse Quil. La plupart des exemples Quil utilisent defsketch
pour dessiner sur un canevas défini sur une page html statique. Je voudrais le faire sur la toile dans ce composant réactif:Quil esquisse sur un canevas Reagent
(defn my-component []
(reagent/create-class
{:component-did-mount (fn [this]
(let [canvas (reagent/dom-node this)
width (.-width canvas)
height (.-height canvas)]
(u/log (str "On canvas with width, height: " width " " height))))
:component-will-mount #(u/log "component-will-mount")
:display-name "my-component"
:reagent-render (fn [] [:canvas {:width 400}])}))
(defn graph-panel []
[v-box
:gap "1em"
:children [[my-component]]])
La meilleure documentation que j'ai trouvé pour faire ce genre de chose est here, mais je ne peux pas tout à fait de trouver comment aller à la niveau suivant et appliquez-le sur la toile ci-dessus. Le code réel pour dire que dessiner une ligne sur la toile ci-dessus serait génial.
En fait, un defsketch
statique et fonctionnant toujours serait bien - la difficulté serait d'avoir accès à ce type de toile dynamique. Si cela ne peut pas être fait, ce serait bon à savoir, et j'utiliserai directement Processing.js, en supposant que ce soit la meilleure idée suivante.
Commentant sur ma propre réponse ... J'ai mis à jour mon code afin que l'ID de toile soit créé dans la fonction 'sketch', plutôt que de devoir être passé. Voir https://github.com/simon-katz/ nomisdraw/blob/create-random-canvas-id/src/cljs/nomisdraw/utils/nomis_quil_on_reagent.cljs – nomiskatz
Pour un code nouveau et meilleur n'utilisant que l'API publique de Quil, voir https://github.com/simon-katz/nomisdraw /blob/5d21f77883ebacfc2a1c4d9d5da19141cce82fd0/src/cljs/nomisdraw/utils/nomis_quil_on_reagent.cljs – nomiskatz