PDA

View Full Version : [Delphi6]Sfarfallio del canvas


Argosoft
30-09-2003, 13:31
volevo creare una specie di Paint con delphi, viene abbastanza bene, ma c'è un difetto molto fastidioso... quando per esempio, OnMouseMove, se il tasto destro del mouse è schiacciato, Image1.Canvas.LineTo(x,y); viene disegnata una linea, ma nel frattempo l'immagine sfarfalla! si può evitare sta cosa e come? THANKS!

gokan
30-09-2003, 19:20
Originariamente inviato da Argosoft
volevo creare una specie di Paint con delphi, viene abbastanza bene, ma c'è un difetto molto fastidioso... quando per esempio, OnMouseMove, se il tasto destro del mouse è schiacciato, Image1.Canvas.LineTo(x,y); viene disegnata una linea, ma nel frattempo l'immagine sfarfalla! si può evitare sta cosa e come? THANKS!
Non ho capito, come sfarfalla? P

Argosoft
30-09-2003, 20:04
eh... pork, non posso nemmeno postare un esempio... pork va bè reinstallo Delphi e torno :)

Argosoft
30-09-2003, 20:27
mannaggia! Delphi su questo computer non funziona, e l'altro è fuori uso! :nera: devo scrivere il codice qui :( ...

allora:

1) metto una TImage e con Canvas.Rectangle la riempio di bianco;
2) OnMouseDown: Canvas.MoveTo(X,Y)
3) OnMouseMove: if mbLeft in Shift then Canvas.LineTo(X,Y)

se provi a disegnare sulla Image vedrai che.... ffrfrfffrrfrrr! :muro:

raga se riuscite a risolvermi questo problema vi includo negli Special Thanks del prossimo programma di grafica che rilascio :D

gokan
30-09-2003, 20:34
Originariamente inviato da Argosoft
mannaggia! Delphi su questo computer non funziona, e l'altro è fuori uso! :nera: devo scrivere il codice qui :( ...

allora:

1) metto una TImage e con Canvas.Rectangle la riempio di bianco;
2) OnMouseDown: Canvas.MoveTo(X,Y)
3) OnMouseMove: if mbLeft in Shift then Canvas.LineTo(X,Y)

se provi a disegnare sulla Image vedrai che.... ffrfrfffrrfrrr! :muro:

raga se riuscite a risolvermi questo problema vi includo negli Special Thanks del prossimo programma di grafica che rilascio :D
Purtroppo al momento neanche io ho installato Delphi (ho superato l'esame pochi giorni fa e per festeggiare ho formattato la partizione con windows), hai provato a fare il disegno su una PaintBox ?
Prova con il componente TPaintBox.
Ciao

Argosoft
30-09-2003, 20:35
o_O



hmmm!



se funziona ti sposo :sofico:



e naturalmente ti includerò negli Special Thanks :D

gokan
30-09-2003, 20:43
Originariamente inviato da Argosoft
o_O



hmmm!



se funziona ti sposo :sofico:



e naturalmente ti includerò negli Special Thanks :D
Prova a dare un'occhiata a questo codice (by la mia prof. di Laboratorio di Delphi), magari ti può servire.
http://www.cs.unipa.it/dl/materie/labprog/15_05/disegna.zip
Ciao

verloc
01-10-2003, 09:15
Il fenomeno che tu chiami sfarfallio si chiama "flicker". :D
Un fenomeno tipico dovuto alla complessa gestione di windows del messaggio WM_PAINT.
Si può ridurre o risolvere in modi diversi.Per esempio nei controlli Borland
TPaintBox si può aggiungere csOpaque al ControlStyle della PaintBox.

in c++ si fa così

PaintBox1->ControlStyle = PaintBox1->ControlStyle << csOpaque;

quindi ti basta tradurre in delfi l'operatore di bit < <

Cioè tutto viene disegnato in background fino a quando non ha finito e poi ti fa vedere tutto in una botta.Tè Capì? :)

Altra soluzione :trovare un componente TPaint box che gestisce il tutto automaticamente (perchè la soluzione sopra non è delle migliori)

http://www.ciemmesoft.com/

Argosoft
01-10-2003, 13:44
Thankssss!!!!! SIIIIII ho risolto con il PaintBox!


quindi ti basta tradurre in delfi l'operatore di bit < <

humm.... per caso è shl() o qualcosa di simile? hmm, mi pare di ricordarmelo...


OK Grazie a tutti e 2!! :mano: :cincin:

verloc
01-10-2003, 14:38
Di Niente :)

Se vuoi il Paint-box flicker-free eccolo.

gokan
01-10-2003, 18:39
Originariamente inviato da Argosoft
Thankssss!!!!! SIIIIII ho risolto con il PaintBox!




humm.... per caso è shl() o qualcosa di simile? hmm, mi pare di ricordarmelo...


OK Grazie a tutti e 2!! :mano: :cincin:
De nada
:D
Puoi dare un'occhiata al sito http://www.g32.org/ dove sono disponibili dei componenti di Delphi potenziati non di poco, sono un'ottima scelta, se hai intenzione di fare un pò di grafica con Delphi.
Dai un'occhiatina ai sorgenti dei bei esempi proposti.
Ciao

Argosoft
01-10-2003, 20:46
Originariamente inviato da gokan
http://www.g32.org/



:eek: cazzarola! superthanks!