c# - 了解涉及 paint() 的小 C# 代码片段

标签 c# visual-studio graphics

我是 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);
} 

当我运行这段代码时,我不断得到许多圆圈和矩形,只在屏幕的一部分下弹出,但它不应该只画一个圆圈吗??

请帮我理解这个??

最佳答案

您使用 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);
}

这会在表单中心绘制圆圈。

祝您实验和学习顺利!

关于c# - 了解涉及 paint() 的小 C# 代码片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6161227/

相关文章:

java - 如何根据两个给定点和描述圆段的给定高度绘制圆弧?

javascript - 如何在 D3.js 中输入数组?

language-agnostic - 为功率计生成红色和绿色之间的颜色?

C# VS 2005 : How to get a class's public member list during the runtime?

c++ - 即使为其相关的 dll 正确生成了 lib 文件,CMake 生成的 MSVC 项目也找不到符号

visual-studio - 如何在某个日期之前获取某个版本的 SourceSafe 项目?

visual-studio - 在预处理器中检测 ARM-64?

c# - 用逗号分隔符读取csv文件c#

c# - 自动隐藏菜单条

c# - C#、Java 中的变量作用域