Bonjour
Je me casse la tete a comprendre un truc qui ne marche pas comme je veux
Explication
Sur un PB j'ai des tas de point, images et trucs de couleurs
Si la souris passe sur certains objet durant la mouse move, j'affiche des infos dans un DGV et j'affiche un point sur le PB
Afin de ne pas perdre l'image sous ce point et ne pas devoir redessiner tout le PB, j'ai cru tres malin de prendre une micro copie d'écran à l'endroit ou je vais afficher le point avant son affichage et replacer cette copie quand la souris passe sur un autre centrte d'intéret
Ca semble marcher sauf que la recopie du buffer ne rend pas la meme image, il y a un decalage que je n'ai pas encore pu identifier.
Si qq voit l'erreur : BRAVO
buffer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 // attributs de la form Point curAddrPoint = new Point(-1,-1); // position reference static Image imgBuf = new Bitmap(10, 10); // buffer image Graphics gBuf = Graphics.FromImage(imgBuf); // Graphics associé au
Fonction
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 if (idx>0) { // nous avons un point pa centre de l'objet intéressé Graphics cGraphics = pb_zoom.CreateGraphics(); if (curAddrPoint.X > -1) // on replace l'image sauvée { cGraphics.DrawImage(imgBuf, curAddrPoint.X - 5, curAddrPoint.Y - 5); } // on sauve un carré 10 x 10 dont pa est le centre Point P = new Point(pa.X - 5 , pa.Y - 5); Point P1 = this.PointToScreen(P); gBuf.CopyFromScreen(P1,new Point (0,0),new Size(10,10),CopyPixelOperation.SourceCopy); curAddrPoint = pa; // on sauve pa pour coup suivant // on affiche un point centré sur pa int X = pa.X; int Y = pa.Y; cGraphics.FillEllipse(semiTransBrushGreen, X - 5, Y - 5, 10, 10); }
Partager