Accueil > Forum > > > > ClipRect et Paint
ClipRect et Paint
vendredi 4 juillet 2008 à 14:01:36 |
ClipRect et Paint

barbichette
|
j'ai un gros souci... j'ai une class dérivé de TCustomControl. Evidemment, j'utilise la procedure Paint pour redessiner mon control, mais voilà, ça marche pas... En gros, quand il y a besoin de redessiner, il y a bien un appel à Paint, mais : 1 - la propriété cliprect de mon canvas contient toujours ClientRect. mais pas seulement la zone à redessiner. 2 - dans ma procédure, j'appelle une fonction d'un autre objet, avec un BitBlt. Et là il copie tout, sauf la zone qui est sencé être redessinée... Comme si il inversait les deux zones (celle à redessiner et celle à excule). Je suis désolé, mais il ne sert à rien de donner le bout de code, mais en gros : quand je fait procedure gnagnagna.paint; var r:trect; begin r:=canvas.cliprect; //<- ici, r=BoundsRect; canvas.rectangle(r); end; Quelqu'un aurait-il une solution, une explication, ou quelqu'un a-t'il déjà eu le cas... Merci
|
|
vendredi 4 juillet 2008 à 15:18:53 |
Re : ClipRect et Paint

florenth
|
Salut !
Pour ta question "2" je ne vois absolument pas d'où ça peut venir mais ce problème ne m'est jamais arrivé. Mais pourrait-on voir plus ? comme par exemple le code appelant BitBlt ?
Pour la "1", c'est tout à fait normal. Tant que tu n'appelles pas InvalidateRect() en spécifiant un nouveau rectangle, tu aura sle rectangle englobant ton contrôle.
A+ Flo
|
|
vendredi 4 juillet 2008 à 15:27:49 |
Re : ClipRect et Paint

barbichette
|
alors, pour la 2 : BitBlt(FParentDc,FDecalDraw.x,FDecalDraw.y, FBitmap.Width, FBitmap.Height, FBitmap.Canvas.Handle,0,0,SRCCOPY);
FParentDc étant justement de HDC du contrôle qui reçoit me pose problème dans la procédure Paint.
Quand à Paint, il me semble (et je l'ai vérifier dans un programme vierge) qu'il peut recevoir des rectangles plus petits quand par exemple, une autre fenêtre, qui cachait mon contrôle, vient à disparaitre ou se déplace. Dans ce cas, windows envoie à mon application et ensuite à mon contrôle juste le rectangle à redessiner. D'ailleurs, dans ce cas, si je demande à faire : canvas.brush.color:=random(99999); canvas.rectangle(clientrect); j'ai bien seulement la zone à redessiner qui se redessine. Donc la région à redessiner est ok, mais pas canvas.cliprect...
Bizarre non...
|
|
vendredi 4 juillet 2008 à 18:19:23 |
Re : ClipRect et Paint

barbichette
|
rebonjour, en fait, j'ai trouvé une partie du problème : le handle du canvas de l'objet TCustomObject n'est pas le même que le canvas renvoyé par getdc(TCustomObject.handle). Je cherche donc comment faire correspondre les deux.
|
|
samedi 5 juillet 2008 à 09:24:42 |
Re : ClipRect et Paint
|
samedi 5 juillet 2008 à 20:15:22 |
Re : ClipRect et Paint

f0xi
|
mmm pourquoi ne pas deriver TGraphicControl plutot que TCustomControl ? c'est beaucoups mieux pour les control graphique.
|
|
samedi 5 juillet 2008 à 22:22:39 |
Re : ClipRect et Paint

barbichette
|
ben en fait, il faut que mon contrôle intercepte les évènements claviers, le focus, les scrollbars... Il ne me semble pas que les TGraphicControl le font.
Par contre, j'ai toujours pas trouvé pourquoi GetDc(TCustomControl) ne donne pas la même chose que TCustomControl.canvas.handle. Je ne connais pas trop le fonctionnement des contrôles de delphi,... Donc, en fait, quand j'essaie de dessiner dans le canvas via getdc, et ben en fait, je dessine dans un canvas qui est identique à canvas.handle, mais c'est pas le même... Donc, il marche pas pareil, et entre autre pour le ClipRect, qui reste toujours à Clientrect via getdc et getcliprect, mais qui correspond bien à la zone à redessiner dans canvas.cliprect... Vraiment, je suis perdu.. Pourquoi 2 handle pour un même composant...
|
|
dimanche 6 juillet 2008 à 12:06:47 |
Re : ClipRect et Paint

florenth
|
"pourquoi ne pas deriver TGraphicControl plutot que TCustomControl ? c'est beaucoups mieux pour les control graphique" => Sans relancer le débat ici inutilement, je n'ai que des problèmes avec les TGraphicControl. Certes ils sont biens pour coder des boutons, etc.. mais dès qu'il faut faire mieux c'est TCustomControl qu'il faut privilégier. Certes ils consomment plus de mémoire et de ressources, mais au moins ce sont de vrais contrôles Windows et non pas une pseudo-implémentation faite par les dev de Borland. [et puis t'a le doublebuffer natif au moins... ^^] Ressources Delphi, sources, tutoriaux, actu, ...: www.mx-dev.net [ Lien ]
|
|
lundi 7 juillet 2008 à 19:56:37 |
Re : ClipRect et Paint

barbichette
|
Tu fais bien de soulever ce point sur le doublebuffer. C'est peut-être de là que résite l'astuce entre canvas.handle et getdc. Je pense que getdc donne le handle direct à l'écran alors que canvas.handle va donner le handle du bitmap pour le doublebuffer...
Je part en vacances mais dès mon retour, je me replonge dedans.
|
|
lundi 7 juillet 2008 à 21:36:45 |
Re : ClipRect et Paint

florenth
|
Alors bonnes vacances ! Moi c'est dans 5 jours ! (autant prévenir)
A+
|
|
Cette discussion est classée dans : gros, paint, canvas, redessiner, cliprect
Répondre à ce message
Sujets en rapport avec ce message
Gros problème de dessin [ par titidebute ]
Je voudrais dessiner sur le canvas d'un TLabel mais qui a déjà une couleur de fond (je vais m'expliquer)...monlabel (créer dynamiquement) -> monlabel.
J ai un gros probleme ... [ par funemul ]
Voila mon probleme : mes projets ont du etre effacé, et j ai du reinstallé delphi. (verion 5 pro)J avais une savegarde, seulement e probleme c que mai
gros problème de compilation [ par Latchee ]
Voila C tout simple, delphi ne veut plus compiler nimporte quelle source ke je lui fait ouvrir, le bouton "run" est grisé.Et malgré moultes bidouillag
Form Et Canvas [ par sebastienbro ]
Voila, je déssine sur le Canvas d'une form. J'voudrais savoir commen on fé pr effacer ce canvas, avant de redessiner dessus ?Bye\* -- Seb -- */
Gestion du focus ? [ par Nebula ]
Salut à tous !Je cherche à coder un éditeur (un peu comme SynEdit, mais en plus léger) pour la gestion du code C/C++, mais je me heurte à un petit pro
panel en canvas? [ par lupoo ]
salut à tous,g un prog qui dessine une ligne elastique sur la Form, avec deux cliques de la souris, mais lorsque je rajoute un Panel, les cliques ne f
Question avec canvas.arc [ par CaptainChoc ]
BOnjour, voila j'aimerais faire un cercle avec la prpriété canvas.arc. jusque la pas de prob sauf que je ve un cercle qui s'affiche progressivement po
Hint sur Canvas ! [ par devio ]
Bonjour,Pourrait-on me dire s'il est possible, et comment, attribuer un Hint sur un rectangle (ou autre) tracé sur le canvas d'une image. Pour exemple
Image JPEG à partir d'un Canvas [ par chups82 ]
J'aimerais enregistrer le canvas d'une TForm sous forme d'image jpeg. J'ai essayé de passer par le canvas d'un TBitmap mais ça ne marche pas. J'ai che
Un petit gros probleme [ par Arianesatch ]
Salut tout le monde dites voir j'ai une petite question pour vous:Je voudrais savoir si l'un des champs dans une table a bien une valeur, je fais un s
Livres en rapport
|
Derniers Blogs
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|