2014-04-12 71 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

很明显,你必须确认球和其他东西的位置。创建做东西的方法。