我试图用彩色像素制作一个台球桌。 我的问题是我正在尝试为池表创建一个图形对象,但我不知道如何初始化它 我知道应该使用
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 :(得分: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);
}
}
}
}
显然你必须验证球和其他东西的位置。创建做事的方法。
答案 1 :(得分:0)
您是否尝试过obj.CreateGraphics()
方法。例如,如果您在窗体上绘图,那么将像这样创建图形对象。
Graphics g = this.CreateGraphics();
但是如果您使用任何面板或任何控件,那么您可以像这样使用。
Graphics g = pnlYourPanel.CreateGraphics();