OVH Cloud OVH Cloud

Dessin avec Graphics

3 réponses
Avatar
Séb
Bonjour, c'est encore moi... ;-)

J'ai cette fois un problème avec les nouvelles méthodes de dessin (je viens
du monde VB6).

Je souhaite dessiner des lignes sur un PictureBox.
J'ai donc mis :
Dim g as Graphics
g = PictureBox1.CreateGraphics
Là, pas de souci, g.DrawLine (Pens.Aqua 10, 10, 20, 20) me fait exactement
ce que je veux.

Le problème, c'est que je dois aussi dessiner sur une PictureBox qui n'est
pas sur le form "qui dessine".
J'ai donc modifié :
Public g as Graphics
g = frmMain.PictureBox1.CreateGraphics
(ces deux lignes sont dans un module)

Et là, plus rien ne s'affiche sur ma form frmMain

Je ne comprends pas où peut être l'erreur.
Si quelqu'un peut m'aider.

MErci,

Séb

3 réponses

Avatar
Emmanuel DURAND
Voilà où j'en suis avec mes dessins sur PictureBox :

Public mGraphicsBMP As Bitmap

Protected mGraphicsMem As Graphics

mGraphicsBMP = New Bitmap(mPicDest.ClientRectangle.Width,
mPicDest.ClientRectangle.Height)

mGraphicsMem = Graphics.FromImage(mGraphicsBMP)

lBrush = New SolidBrush(pColor)

mGraphicsMem.FillRectangle(lBrush, pRect)

et dans l'événement Paint du PictureBox

e.Graphics.DrawImage(mGraphicsBMP, 0, 0)
Avatar
Séb
"Emmanuel DURAND @wanadoo.fr>" <edurand<NOSPAM> a écrit dans le message de
news:
Voilà où j'en suis avec mes dessins sur PictureBox :

Public mGraphicsBMP As Bitmap
Protected mGraphicsMem As Graphics
mGraphicsBMP = New Bitmap(mPicDest.ClientRectangle.Width,
mPicDest.ClientRectangle.Height)
mGraphicsMem = Graphics.FromImage(mGraphicsBMP)
lBrush = New SolidBrush(pColor)
mGraphicsMem.FillRectangle(lBrush, pRect)

et dans l'événement Paint du PictureBox
e.Graphics.DrawImage(mGraphicsBMP, 0, 0)



Bonsoir,

Ca répond effectivement à mes problème, au moins en partie (il y a encore qq
soucis de rafraichissement). Mais c'est un bon début pour que je puisse
progresser. Merci bcp.

Séb
Avatar
Séb
Re-bonsoir,

Le code a été adapté et fonctionne presque bien :

En fait, rien ne s'affiche sur le PictureBox, magré des
frmMain.PictureBox1.Refresh que je peux mettre partout.
En revanche, si je passe une fenêtre ou une boite de dialogue au dessus de
la zone, le dessin s'affiche bien lorsque la zone réapparait.
Une idée, sur cette dernière étape ??

Merci,

Séb