2009-09-10 4 views
0

« i en utilisant ce code dans le piicturebox1_paintcompensation l'image dans un picturebox

myusercolor=(sysytem.drawing.color.black) 
myalpha=100 
using g as graphics=graphics.fromimage(picturebox1.image) 
    g.clear(color.white) 
    dim currentpen as object=new pen(color.fromargb(myalpha,myusercolor),mypenwidth) 
    g.drawpath(ctype(currentpen,pen),mousepath) 
end using 

'using in the form_load ' 
picturebox1.image=new bitmap(.....) 

'in the clearbutton_click ' 
picturebox1.image=nothing 

par ce code j'ai un problème que lorsque je clique sur le bouton Effacer la picturebox est cleared.but dans le mouseover du picturebox dernier l'image dessinée apparaîtra.ainsi je ne peux pas dessiner une nouvelle image ..

+0

quelqu'un sait s'il vous plaît répondre pour moi.merci – user85511

Répondre

0

C'est une conjecture, mais je pense que mousepath contient le "dessin" que l'utilisateur a fait. Lors de l'initialisation d'une nouvelle image (probablement dans le gestionnaire d'événements clearbutton_click) vous devrez également effacer les données:

If Not mousepath Is Nothing Then 
    mousepath.Dispose() 
End If 
mousepath = new GraphicsPath() 

Comme une note de côté, pas directement lié à votre question, je vous suggère deux améliorations dans comment le Pen est géré. Regardez les deux lignes de code ci-dessous (à partir de votre exemple ci-dessus):

dim currentpen as object=new pen(color.fromargb(myalpha,myusercolor),mypenwidth) 
g.drawpath(ctype(currentpen,pen),mousepath) 

Ce premier crée un nouveau Pen et la stocke dans la variable objectcurrentpen. Puisque currentpen est déclaré object, vous devez le convertir en Pen en le passant à DrawPath. Si vous déclarez plutôt currentpen comme Pen, vous n'avez pas besoin d'effectuer cette conversion. En outre, Pen implémente IDisposable donc vous devez soit appeler Dispose sur, ou l'envelopper dans un bloc using:

Using currentpen as Pen = new Pen(Color.FromArgb(myalpha,myusercolor),mypenwidth) 
    g.drawpath(currentpen,mousepath) 
End Using 
1

Vous dessinez en cas Picturebox1_paint? Cela se déclenchera chaque fois que le contrôle est affecté par des choses telles que le déplacement du formulaire ou, dans ce cas, une souris se déplaçant dessus. Vous devez dessiner en dehors de cet événement, mais cela dépend de ce que vous essayez de faire.

Questions connexes