我是c#的新手(使用visual c#2010),并且想要制作一个简单的游戏,它会有弹跳球型的东西,
我使用图形fillellipse制作一个球,现在我有了这个代码,
protected override void OnPaint( PaintEventArgs e)
{
//System.Drawing.Graphics gobj;
gobj = this.CreateGraphics();
Pen pen = new Pen(System.Drawing.Color.LightSkyBlue, 6);
SolidBrush brush = new SolidBrush(System.Drawing.Color.Magenta);
Rectangle myRectangle = new Rectangle((PointToClient(Cursor.Position).X), PointToClient(Cursor.Position).Y, 250, 200);
gobj.DrawRectangle(pen, myRectangle);
gobj.FillEllipse(brush, myRectangle);
}
当我运行此代码时,我继续获取许多圆圈和矩形,仅在屏幕的一部分下弹出,但是它不应该只绘制一个圆圈吗?
请帮我理解这个??
答案 0 :(得分:2)
使用DrawRectangle方法绘制矩形,然后使用FillEllipse绘制圆形,您只需使用FillEllipse。就像Mikant提到的那样你不需要创建图形 - 使用e.Graphics。这是代码:
protected override void OnPaint(PaintEventArgs e)
{
SolidBrush brush = new SolidBrush(System.Drawing.Color.Magenta);
e.Graphics.FillEllipse(brush, (this.Height / 2) - 40, (this.Width / 2) - 40, 80, 80);
}
这会在表单中心绘制圆圈。
祝好运实验和学习!
答案 1 :(得分:2)
这应该是一个评论,但我还没有足够的特权!
在处理使用非托管资源(如Pen和Font)的类型时,我会养成使用 using statement的好习惯。它将确保正确使用IDisposable对象。
答案 2 :(得分:1)
请记住永远不要使用CreateGraphics
方法(特别是在OnPaint中)。将所有gobj
替换为e.Graphics
并享受