2014-04-12 74 views
-1

我試圖創建一個與彩色像素球製成的檯球桌。 我的問題是,我試圖讓對臺球桌的圖形對象,但我不知道如何對其進行初始化 我知道應該使用創建圖形對象

PaintEventArgs pe 

我已經試過

 base.OnPaint(pe); 
     // Declare and instantiate a new pen. 
     System.Drawing.Pen myPen = new System.Drawing.Pen(Color.Aqua); 

     // Draw an aqua rectangle in the rectangle represented by the control. 
     pe.Graphics.DrawRectangle(myPen, new Rectangle(this.Location, 
      this.Size));` 

但它只創建了一個矩形,它需要一個面板。這是做這件事的正確方法,因爲我應該創建一個彩色像素球?

+0

請考慮檢查一些基本的繪圖示例,閱讀MSDN上'DrawRectangle'的文檔並調試您的代碼......(您當前的問題是由於使用矩形的錯誤起始點...) –

+0

但我正確嗎?在面板裏面? – user3439558

回答

0

您是否試過obj.CreateGraphics()方法。例如,如果你正在繪製窗體窗體,那麼將會像這樣創建圖形對象。

Graphics g = this.CreateGraphics(); 

但如果你正在繪製任何面板或任何控制,那麼你可以像這樣使用。

Graphics g = pnlYourPanel.CreateGraphics(); 
1

我會建議創造檯球桌上的東西控制這樣

public class Billiard:Control 
{ 
    public List<Point> Balls { get; private set; } 

    public Billiard() 
    { 
     Balls=new List<Point>(); 
    } 

    protected override void OnBackColorChanged(EventArgs e) 
    { 

    } 

    protected override void OnPaint(PaintEventArgs e) 
    { 
     base.OnPaint(e); 
     using (var imageBuffer = new Bitmap(Width, Height)) 
     { 
      using (var graphicsObject=Graphics.FromImage(imageBuffer)) 
      { 
       graphicsObject.Clear(Color.Green); 

       using (var boundryPen=new Pen(Brushes.SaddleBrown,10)) 
       { 
        graphicsObject.DrawRectangle(boundryPen,0,0,Width,Height); 
       } 

       using (var ballPen = new Pen(Brushes.Red, 5)) 
       { 
        foreach (var ball in Balls) 
        { 
         graphicsObject.DrawEllipse(ballPen,new Rectangle(ball,new Size(5,5))); 
        } 
       } 

       e.Graphics.DrawImage((Image)imageBuffer.Clone(),0,0); 
      } 
     } 
    } 
} 

Appears like this

很明顯,你必須確認球和其他東西的位置。創建做東西的方法。