bonjour,
j'aurai besoin d'un petit coup de pouce pour arriver à* faire marcher un source.
ce que je voudrais faire, c'est booster le nombre de message entre la souris et une image bitmap, pour pouvoir dessiner avec plus de fluidité.
j'ai trouvé ce source sur qui marche très bien, mais ça fonctionne avec une fiche et pas une image...
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 private FAnciennePosXCurseur : integer ; FAnciennePosYCurseur : integer ; FCompteurEvenement : integer ; FInterpolation : boolean ; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); const N = 20 ; // Nombres de points intermédiaires var t : integer ; Msg : TWMMouseMove ; begin if ( FAnciennePosXCurseur<>X ) or (FAnciennePosYCurseur<>Y) then begin // Filtrage des positions negatives if ( X>0 ) and (Y>0 ) then begin for t:=0 to N do begin // Les points interpolés sont envoyés sous forme négative // afin d'eviter une récursivité des messages Msg.XPos := - Trunc( (1.0 - t/N)*FAnciennePosXCurseur + ( t/N * X )); Msg.YPos := - Trunc( (1.0 - t/N)*FAnciennePosYCurseur + ( t/N * Y )); PostMessage(form1.Handle, WM_MOUSEMOVE, TMessage(Msg).WParam, TMessage(Msg).LParam) ; end ; FAnciennePosXCurseur := X ; FAnciennePosYCurseur := Y ; end else begin x := abs(X); y := abs(y); Canvas.Pen.Color := clRed ; // Evenements interpolés Canvas.Ellipse(x-20,y-20,x+20,y+20); end ; end ; end;
donc ce que je modifie:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
l'évènement MouseMove de mon image,
ensuite je suis pas sur pour PostMessage(form1.Handle
par quoi est ce qu'il faut que je remplace ?
form1.Image1.Canvas.Handle ?
j'ai tout essayé mais ça n'a rien donné
merci d'avance oops
Partager