创建图形对象

时间:2014-04-12 02:42:28

标签: c# winforms

我试图用彩色像素制作一个台球桌。 我的问题是我正在尝试为池表创建一个图形对象,但我不知道如何初始化它 我知道应该使用

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));`

但它只创建了半个矩形,它需要一个面板。这是否是正确的做法,因为我应该创建一个彩色的像素球?

2 个答案:

答案 0 :(得分: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

显然你必须验证球和其他东西的位置。创建做事的方法。

答案 1 :(得分:0)

您是否尝试过obj.CreateGraphics()方法。例如,如果您在窗体上绘图,那么将像这样创建图形对象。

Graphics g = this.CreateGraphics();

但是如果您使用任何面板或任何控件,那么您可以像这样使用。

Graphics g = pnlYourPanel.CreateGraphics();