C'è un modo per evitare di ridisegnare tutti gli elementi sulla tela (quindi non devo tenere traccia di tutto), pur avendo ancora un Esperienza di disegno scorrevole con la linea attualmente disegnata?Disegna una linea con lo strumento Penna su tela con Smashly senza dover ridisegnare tutte le altre righe
risposta
Questo è una domanda molto buona, ma formulata in modo vago. Si prega di essere più attenti domande di parole in futuro.
In genere durante il disegno di linee smussate è necessario ridisegnare la riga dall'inizio.
Non è necessario ridisegnare tutto fin dall'inizio, però, perché si dovrebbe essere seguito di queste operazioni:
- Salva la tela corrente a una tela in memoria
- iniziare a disegnare una nuova linea
- Come si sta disegnando, si è costantemente:
- Cancellazione della tela
- disegno da canvas n-memoria sulla tela principale
- Disegno la linea-so-far
- Quando la linea termina, si salvano le nuove tela alla tela in memoria e ripetere questo processo
Il solo la linea che devi tenere traccia di (in termini di punti) è quella "corrente". Tutte le vecchie linee vengono salvate nella bitmap tramite la tela in memoria.
Ecco un esempio che ho fatto molto tempo fa, trattando in particolare le linee morbide. L'organizzazione del codice è strano perché ho iniziato con qualcuno codice elses, ma dovrebbe dare l'idea di base:
La parte disegno sopra descritta è visto nella MouseMove:
this.mousemove = function(ev) {
if (tool.started) {
context.clearRect(0, 0, 300, 300);
// put back the saved content
context.drawImage(memCanvas, 0, 0);
tool.points.push({
x: ev._x,
y: ev._y
});
drawPoints(context, tool.points);
}
};
Grazie per la risposta ... Ho capito il problema, e questo è ESATTAMENTE il motivo per cui stavo facendo la domanda (ri-disegnare il problema) .. Una piccola domanda sul tuo violino e spiegazione: "Disegno da in memoria tela sulla tela principale " -perché è necessario continuare a ridisegnare la tela temporanea su quella esistente? – Mia
Perché dobbiamo cancellare la tela ogni volta. Quindi la tela temp rappresenta tutte le linee già disegnate, che dobbiamo mettere "indietro" sulla tela prima di disegnare la nostra ultima riga –
Non potrei essere più d'accordo con la risposta, ma mi piacerebbe dire che potresti usare un'immagine disegnare anche sulla tela. Si perde il "controllo" che si ha dal disegnare la forma da soli, ma mi sembra più efficiente (non c'è alcun ritardo mentre si fa clic sulla tela per disegnare), a seconda di cosa si tratta veramente della tua applicazione. Ecco un link alla mia domanda - non proprio - simile (guarda la parte EDIT nella mia domanda): http://stackoverflow.com/questions/10122553/create-a-realistic-pencil-tool-for-a- painting-app-with-html5-canvas Puoi sostituire l'immagine per ottenere il risultato che desideri veramente – jazzytomato
- 1. Disegna una tela Android su tutte le applicazioni?
- 2. Disegna le immagini su una tela
- 3. Disegna una linea liscia
- 4. Disegna video su tela HTML5
- 5. Disegna un cerchio in una tela con più colori sfumati
- 6. Come si disegna una linea su iPhone?
- 7. Tracciare una linea su tela con stile personalizzato (Delphi)
- 8. Disegna ombre di prospetto su tela
- 9. Come si disegna una linea su una tela in WPF di 1 pixel di spessore
- 10. Disegna una linea parallela
- 11. Disegna una freccia su tela HTML5 tra due oggetti
- 12. Selezionare Righe con id dover numero pari
- 13. Ridisegnare la tela HTML5 incredibilmente lenta
- 14. Rimuovere tutte le righe prima di una partita con sed
- 15. Leggi tutte le righe con BufferedReader
- 16. Disegna freccia su etichetta di tela
- 17. Disegna una linea con un angolo specifico in Java
- 18. Richtextbox disegna una linea rtf
- 19. Disegna testo su tela ad angolo
- 20. Disegna linee continue su tela HTML una dopo l'altra
- 21. Come AGGIORNARE tutte le colonne di un record senza dover elencare tutte le colonne
- 22. Più righe con righe che iniziano con lo spazio
- 23. Disegna una linea di collegamento in RaphaelJS
- 24. Problemi di tela con Chrome su Mac
- 25. GDI +: come si disegna una linea lunga un pollice su qualsiasi dispositivo su cui è disegnata?
- 26. Come scrivere tutte le righe in C# senza CRLF
- 27. Estrai tutte le righe univoche
- 28. Disegna una linea smussata tra i geopoints su Android
- 29. Disegna linea punteggiata (non tratteggiata!), Con IBDesignable nel 2017
- 30. Disegna 2 scene nella stessa tela - three.js
Sono cercando di usare canvas per un'applicazione di disegno. Hai già le posizioni del mouse, ma il risultato è (come puoi immaginare) abbastanza spigoloso. Sto cercando di appianare la linea finale, senza bisogno di ridisegnarlo ogni fotogramma dall'inizio. Forse un modo per calcolare la versione più liscia di ciò che viene aggiunto ogni fotogramma ... – Mia
@ x3ro se si verificano il problema in prima persona saprete che questa era in realtà una domanda molto buona che si nasconde dietro una formulazione piuttosto scadente. Fare uno sforzo prima di votare per chiudere una domanda è solitamente molto apprezzato. Ho cercato di migliorare la formulazione, se ti interessa aiutare ... – iwein
@iwein: Penso che chiunque pubblichi una domanda su SO dovrebbe fare lo sforzo di scrivere una domanda decente. In quanto sopra che include, ad esempio, il link a ciò che ha letto, e un piccolo esempio di codice di ciò che ha già scritto. Inoltre, il primo paragrafo fa una dichiarazione, il secondo paragrafo pone una domanda, ma non riesco davvero a vedere la connessione diretta tra di loro (vero, si potrebbe essere in grado di interpolare, ma comunque). Perché una domanda povera dovrebbe rimanere aperta nella remota possibilità che qualcuno arrivi con chi lo capisce? Perché non costringere l'OP a riformularlo? – fresskoma