2016-04-06 32 views
1

ile devam ettiriyorum Bir tıklatma olayıyla bir panele resim çizmeye çalışıyorum. Bunu yapmayı başardım, ancak oluşturulan görüntüleri tutmak istiyorum. Her tıklamadan sonra, önceden oluşturulan görüntü başarısız olur. Tüm çekilen görüntüleri nasıl saklayabilirim? Bu benim kod artık e kadar geçerli:C# görüntülerini Graphics.DrawImage

Eğer bütün ızgara yeniden çizilir geçersiz olduğundan
private void drawdot(object sender,PaintEventArgs e) 
     { 
      Image dot = Image.FromFile("dot.png"); 
      var points = this.PointToClient(new Point(Cursor.Position.X-20, Cursor.Position.Y-30)); 
      e.Graphics.DrawImage(dot, points); 
     } 


private void grid2_Paint(object sender, EventArgs e) 
     { 
      if(started==true) 
      { 
       var points = this.PointToClient(new Point(Cursor.Position.X, Cursor.Position.Y)); 
       coord2.Add(points.ToString()); 
       clickuri2++; 
       test2_puncte.Text = "Testul 2 | Puncte: " + clickuri2; 
       //draw 
       grid2.Paint -= drawdot; 
       grid2.Paint += drawdot; 
       grid2.Invalidate(); 
      } 
     } 

cevap

0

, sadece parçalar sadece yeniden çizilir geçersiz kılmalıdır. Bu bir bölge oluşturur ve bunu grid2'ye geçirir. Bir parametre olarak kabul edin.

 System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath(); 
     path.AddLines(points); 
     lvResults.Invalidate(new Region(path)); 

GÜNCELLEME: Ayrıca her yeni noktalar için bir kez ImageDraw yöntemi tüm tıklanan noktaların bir listesini tutmak ve diyebiliriz

, sadece yeni bir öğe eklemek Kabaca böyle bir şey gibi görünür Nesne tıklandığında liste ve gitmek için iyi olmalısınız. Bazı noktaları çizmek için çalışırken bir kişinin tıkladığı bazı yarış durumu senaryosuna katılıp katlanamayacağınızı bilmiyorum ama eğer bu durum

+0

olduğu takdirde kolayca ele alınabileceğini unutmayın. Her nokta arasında düz çizgilerle bir poligon kullandığınızı varsayalım, belki bir kare veya yuvarlatılmış kenarları olan bir şey, sadece ihtiyacınız olan bölgeyi yaratmanız ve geçersiz kıldığınız herhangi bir şeyin tamamen yeniden çizileceğini unutmayın. – Zalomon

+0

Bir listedeki tüm noktaları saklayarak ve görüntüleri çizmek için bir foreach döngüsünü kullanarak yaptım. Yardım için teşekkürler! – Catalin

İlgili konular