On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
--
Pourquoi tant de haine pour cette pauvre aide Delphi ????
Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
--
Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas
DUCROS s'est déjà décarcassé à expliquer tout ça en long en large et en travers sur le forum.
Donc, tu cherches sur le forum :
Mot-clé : TPaintBox
Auteur : Waskol
Rubrique du forum : Delphi
Si tu ne trouve rien, c'est vraiment parce que tu as mal cherché
Bon courage hombre.
En résumé :
- Avec ton TPaintBox, il te faut un TBitmap. Tu le crées dans le OnCreate de ta fiche, tu lui donne les dimensions de la PaintBox, et tu le détruit dans le OnDestroy de la fiche.
- Pour mettre à jour ton dessin, tu écris une procédure pour ça dans laquelle
a) tu dessines dans le bitmap
b) tu appelle PaintBox1.Repaint;
- Dans le OnPaint du TPaintBox tu dessine le contenu du bitmap sur la paintbox
Ce qui donne le schéma suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TForm1 = class(TForm) PaintBox1: TPaintBox; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure PaintBox1Paint(Sender: TObject); private { Déclarations privées } TonBitmap:TBitmap; public { Déclarations publiques } Procedure MiseAJourDessin; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin TonBitmap:=TBitmap.Create; TonBitmap.Width:=PaintBox1.ClientWidth; TonBitmap.Height:=PaintBox1.ClientHeight; end; procedure TForm1.FormDestroy(Sender: TObject); begin TonBitmap.Free; end; procedure TForm1.MiseAJourDessin; begin //Dessin dans le canvas du bitmap TonBitmap.Canvas.Draw(); //Appel du OnPaint de la PaintBox PaintBox1.Repaint; end; procedure TForm1.PaintBox1Paint(Sender: TObject); begin PaintBox1.Canvas.Draw(0,0,TonBitmap); end; end.
Ca va l'faire ?
Bidouilleuse Delphi
Yep !
Un seul homme vous manque et tout barre en sucette,
Bien vu, Waskol,
--
jp
Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peut–être qu'il peut être sûr, etc.
Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
Mes 2 cts,
--
jp
Ha, une précision tout de même, si lenteur il y a c'est parce que d'une manière ou d'une autre vous utilisez la propriété pixels du bitmap ou du canvas (boudiou que c'est lent !)
Pour coder les pixel il est vraiment préférable de passer par la propriété "scanline" des canvas. (il y a un tuto sur le site perso de nono40 : http://nono40.developpez.com ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part MonBitmap.Canvas.pixels[x,y]:=clYellow;
très honnêtement, le temps de traitement d'une image peut varier dans un rapport de 1/2 seconde, à quelque millièmes de secondes (j'vous l'jure !).
Après, pour les Draw, line, etc, ça va encore à peu près. D'accord, ce n'est pas DirectX, mais on peut faire des choses assez "véloces" (voir ma version du Serpent pour le défi))
Bidouilleuse Delphi
salut
pour augmenter l'efficacité de ton dessin tu peut
passer par les api windows
telque les selectobject
,createcompatiblebitmap,DeleteObject,BitBlt et autre joyeuseté
@+ Phil
Blaise PascalNous souhaitons la vérité et nous trouvons qu'incertitude. [...]
Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
PS : n'oubliez pas le tag
J'ai suivi tout ce que vous avez dit sur le post.
Il y a eu pas mal de solutions et de 'débats'.
Je vous remercie pour votre aide.
Pense a appliquer le tag
et n'hesite pas a revenir nous voir si tu as des questions plus precises sur la methode que tu auras choisi
On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
--
Pourquoi tant de haine pour cette pauvre aide Delphi ????
Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
--
Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas
Je reviens un peu tard sur ce message mais un détail n'a pas été donné dans cette intéressante discussion
Il est généralement conseillé de verrouiller le canvas pendant la manipulation, cela peut aider concernant les performances
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 BMP.Canvas.Lock; try ... finally BMP.Canvas.Unlock; // pas BMP.Vancas.Unlock; :-Þ end;
devYan.
Je note
Je ne connaissant pas ca ... et en effet ca peut servir.
On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
--
Pourquoi tant de haine pour cette pauvre aide Delphi ????
Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
--
Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager