65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 C# 和 GDI+ 绘制美国国旗

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.81/5 (17投票s)

2007年3月26日

CPOL

3分钟阅读

viewsIcon

152308

downloadIcon

1927

本文展示了如何使用 C# 和 GDI+ 绘制图形对象

引言

Visual C# 提供了一个强大的 GDI+ 类库接口,允许用户绘制各种图形对象。

本文向您展示如何使用 C# 和 GDI+ 创建美国国旗。美国国旗包含 50 个星形多边形和几个矩形。

背景

多边形是我们处理 2D 和 3D 图形渲染或处理计算几何时最重要的图形对象之一。 Graphics.DrawPolygon 方法绘制由点结构数组定义的多边形。数组中每两个连续的点指定多边形的一条边。

在这里,我将向您展示如何创建一个美国国旗对象。 首先,我们需要定义星形的坐标。 如下图所示,假设星形的中心坐标为 (xc, yc),r1 为内圆的半径,r 为外圆的半径。 角度 a = 72 度,ß = 36 度。

从这张图中,我们可以很容易地确定点 0 到 9 的坐标,如下表所示

Points x 坐标 y 坐标
0 xc yc – r
1 xc + r1 sinß yc – r1 cosß
2 xc + r sina yc – r cosa
3 xc + r1 sina yc + r1 cosa
4 xc + r sinß yc + r cosß
5 xc yc + r1
6 xc – r sinß yc + r cosß
7 xc – r1 sina yc + r1 cosa
8 xc – r sina yc – r cosa
9 xc – r1 sinß yc – r1 cosß

我们首先实现一个 DrawStar 方法,用于在中心位置 (xc, yc) 绘制单个星形多边形,并使用大小控制参数 r(外圆的半径,如上图所示)。然后,我们添加一个 DrawFlag 方法,该方法首先在白色矩形背景上绘制七个红色条纹。 请注意,通过设置来维护国旗的比例

float height = 10 * width / 19;

然后,该方法绘制具有适当大小的蓝色矩形。 最后,我们通过调用 DrawStar 方法将五十颗星星均匀地放置在蓝色矩形上,以完成该项目。

Using the Code

美国国旗实际上是通过覆盖 Form1 类的 OnPaint 方法来绘制的

protected override void OnPaint(PaintEventArgs e)
{
    Graphics g = e.Graphics;
    g.SmoothingMode = SmoothingMode.AntiAlias;
    DrawFlag(g, 20, 20, this.Width - 50);
    g.Dispose();
}

构建并运行此项目会生成以下屏幕截图

这只是为了好玩,甚至可能有用。 这个项目来自新书“Practical C# Charts and Graphics”中的示例,您可以在其中找到更高级的图表和图形编程,以用于实际的 .NET 应用程序。 有关更多信息,请访问 我的网站

关于作者

Jack Xu 博士拥有理论物理学博士学位。 他在 Basic、Fortran、C、C++、Matlab 和 C# 方面拥有超过 15 年的编程经验,专注于数值计算方法、算法、物理建模、计算机辅助设计 (CAD) 开发、图形用户界面和 3D 图形。 目前,他负责开发基于 Microsoft .NET Framework 的商业 CAD 工具。

请阅读我的其他文章

© . All rights reserved.