2015-12-31 97 views
2

此工作正確。如果我從我的系統拍攝照片。在PictureBox中繪製矩形或箭頭()

 pictures[idObjekt] = new Bitmap(@"C:\rectangle.png"); 
     picBox[idObjekt] = new PictureBox(); 
     picBox[idObjekt].Location = new System.Drawing.Point(25, 7); 
     picBox[idObjekt].SizeMode = PictureBoxSizeMode.StretchImage; 
     picBox[idObjekt].ClientSize = new Size(53, 40); 
     picBox[idObjekt].Image = pictures[idObjekt]; 
     picBox[idObjekt].MouseDown += pictureBox1_MouseDown; 
     picBox[idObjekt].MouseMove += pictureBox1_MouseMove; 
     picBox[idObjekt].PreviewKeyDown += Form1_PreviewKeyDown; 
     picBox[idObjekt].Tag = idObjekt; 
     this.Controls.Add(this.picBox[idObjekt]); 

但是當我嘗試在圖片框畫點什麼()我只看到空的PictureBox()我不知道爲什麼這不起作用正確。

 pictures[idObjekt] = new Bitmap(1000, 1000, PixelFormat.Format24bppRgb); 
     picBox[idObjekt] = new PictureBox(); 
     picBox[idObjekt].Location = new System.Drawing.Point(25, 7); 
     picBox[idObjekt].SizeMode = PictureBoxSizeMode.StretchImage; 
     picBox[idObjekt].ClientSize = new Size(500, 500); 
     picBox[idObjekt].MouseDown += pictureBox1_MouseDown; 
     picBox[idObjekt].MouseMove += pictureBox1_MouseMove; 
     picBox[idObjekt].PreviewKeyDown += Form1_PreviewKeyDown; 
     picBox[idObjekt].Tag = idObjekt; 
     picBox[idObjekt].BackColor = Color.White; 
     this.Controls.Add(this.picBox[idObjekt]); 
     Graphics g = Graphics.FromImage(pictures[idObjekt]); 

     // Rectangle 
     int heightRec = 100; 
     int widthRec = 250; 
     int pozitionX = 10; 
     int pozitionY = 10; 

     g.DrawRectangle(Pens.White, pozitionX + 1, pozitionY + 1, widthRec - 3, heightRec - 3); 
     g.DrawRectangle(Pens.Gray, pozitionX + 2, pozitionY + 2, widthRec - 3, heightRec - 3); 
     g.DrawRectangle(Pens.Black, pozitionX, pozitionY, widthRec, heightRec); 
     g.DrawString("The Code Project", new Font("Arial", 12, FontStyle.Italic), 
     SystemBrushes.WindowText, new PointF(10, 50)); 

     // Arrow 
     Pen p = new Pen(Color.Red, 7); 
     p.EndCap = LineCap.ArrowAnchor; 

     // Arrow 
     Point point1 = new Point(100, 100); 
     Point point2 = new Point(100, 100); 
     g.DrawLine(p, point1, point2); 
     g.Dispose(); 
     pictures[idObjekt].Dispose(); 

回答

1

第二次,你永遠不會將位圖分配給圖片框。

picBox[idObjekt].Image = pictures[idObjekt]; 

你完成繪圖後,你爲什麼叫pictures[idObjekt].Dispose()? 如果您需要保留PictureBox中的圖像,則不應該丟棄圖像。