2010-11-22 7 views

Répondre

3
public class Shape 
{ 
    public float X { get; set; } 
    public float Y { get; set; } 
    public Image Image { get; set; } 
} 

et le code:

private string _currentTool; 
    private readonly List<Shape> _shapes; 

    private void Button1Click(object sender, EventArgs e) 
    { 
     _currentTool = "img"; 
    } 

    private void PictureBox1MouseDown(object sender, MouseEventArgs e) 
    { 
     switch (_currentTool) 
     { 
      case "img": 
       _shapes.Add(new Shape {Image = button1.Image, X = e.X, Y = e.Y}); 
       pictureBox1.Invalidate(); 
       break; 
     } 
    } 

    private void PictureBox1Paint(object sender, PaintEventArgs e) 
    { 
     foreach (var shape in _shapes) 
     { 
      e.Graphics.DrawImage(shape.Image, shape.X, shape.Y); 
     } 
    } 
+1

Vous ne devriez jamais dessiner en utilisant 'CreateGraphics'. Tout ce que vous dessinez sur l'objet 'Graphics' qu'il retourne ne sera pas persistant; c'est-à-dire qu'il disparaîtra chaque fois que la fenêtre sera redessinée. Vous devez gérer l'événement 'Paint' pour' PictureBox' et dessiner sur l'objet 'e.Graphics' qu'il fournit. –

+0

Navid, vous ne disposez pas de l'objet graphique. Vous devriez utiliser 'using 'ici. –

+0

@Cody Gray: Je modifie mon message. –

Questions connexes