Non sono sicuro di cosa QPainter faccia quando invoco salvataggio e ripristino. Sta salvando l'immagine che sta disegnando o sta solo salvando informazioni come penWidth e colori ecc ... Potrei usarlo per ripristinare l'immagine di un precedente evento paint?Cosa fanno QPainter :: save() e QPainter :: restore()?
risposta
è possibile in qualsiasi momento salvare lo stato del QPainter chiamando la funzione save() che salva tutte le impostazioni disponibili su uno stack interno. La funzione restore() li riapre.
Tutte queste impostazioni sono elencate al collegamento indicato. Quindi sta solo salvando le impostazioni della vernice e nulla che sia effettivamente dipinto.
Se si utilizza il salvataggio/ripristino molto, è utile avere una piccola classe RAII ("PainterSaver") per assicurarsi che ogni save() (fatto nel ctor) abbia una corrispondente chiamata di restore() (eseguita nel dtor), altrimenti si può incorrere in cattivi "salvataggi/ripristini" sbilanciati.
(vedi QMutexLocker per lo stesso concetto) –
In realtà non risponde alla domanda ma è una buona idea –
Come probabilmente stai cambiando il colore e lo stile o qualsiasi altra impostazione del colore, di solito vuoi uscire dalla funzione di disegno con le stesse impostazioni che aveva quando entri. Pertanto, prima di cambiare le impostazioni del pittore, usa QPainter::save()
QPainter::restore()
dopo aver finito di disegnare con le impostazioni modificate ad es
void paint(QPainter* painter,
const QStyleOptionGraphicsItem* option,
QWidget* widget = 0)
{
// Painter has certain settings
painter->save();
QPen pen = painter->pen();
pen.setColor(QColor(200,20,20);
// Changing settings of painter
painter->setPen(pen);
// ... Draw
painter->restore();
// Painter has same settings as on entry into this function
}
painter->save()
mette lo stato del pittore su una pila, painter->restore()
tira lo stato dalla pila e cambia le impostazioni in modo che corrisponda.
- 1. Disegno rich text con QPainter
- 2. Come utilizzare QPainter su QPixmap
- 3. QPainter :: ruota disabilita l'antialias del testo estratto
- 4. QPainter prestazioni ad alta frequenza di fotogrammi
- 5. Come utilizzare una maschera con QPainter?
- 6. Come disegnare e riempire un triangolo con QPainter?
- 7. Testo da QPainter molto più bello di QPainterPath
- 8. Come ottenere le dimensioni del testo renderizzato su un QPainter?
- 9. Cosa fanno helper e helper_method?
- 10. '__exidx_start' e '__exidx_end' cosa fanno?
- 11. Cosa sono TestExecutionListeners e cosa fanno?
- 12. QT 4.5 - Come si ottiene un dispositivo QPainter in un QGraphicsView
- 13. 2d HUD che non si disegnano correttamente su QGLWidget (usando QPainter)
- 14. Quali passaggi sono necessari per abilitare l'antialias quando si utilizza QPainter su un QGLWidget?
- 15. beginTransaction(), endTransaction() e setTransactionSuccessful(). Cosa fanno esattamente?
- 16. rails: cosa fanno esattamente hidden_field e hidden_field_tag?
- 17. Cosa fanno internamente New e Dispose?
- 18. errore iptables in android: iptables-save e iptables-restore non funzionanti
- 19. Differenza tra `--save` e` --save-dev`
- 20. cosa fanno $$ PWD e. significa in .pro in qt
- 21. Test dei sonar e proprietà dei binari, che cosa fanno?
- 22. SQL: cosa fanno esattamente le chiavi primarie e gli indici?
- 23. Cosa fanno low_memory e le bandiere memory_map fare pd.read_csv
- 24. Do vector.emplace_back() e vector.push_back() fanno la stessa cosa?
- 25. Cosa fanno gli operatori * = e = * in T-SQL?
- 26. Cosa fanno i flag -XX: -PrintGC e XX: -PrintGCDetails?
- 27. Cosa fanno queste impostazioni di PHP mbstring?
- 28. Cosa fanno i comandi ft in Vim?
- 29. Cosa fanno questi tre punti in React?
- 30. Cosa fanno i backtick in R?
Per elaborare, questo consente di fare cose come, ad esempio: si imposta una penna, si disegna, si salva, si cambia penna, si disegna, si ripristina, si esegue un altro disegno con la penna originale. – Dan