文档章节

C#绘制中国国旗

北风其凉
 北风其凉
发布于 2014/04/24 10:24
字数 831
阅读 946
收藏 5

程序运行截图:

中国国旗被定义在《GB:12982-2004》中,以下是从维基百科条目中华人民共和国国旗中截的一张图,标出了五颗星大致的位置。

建立一个空的C#Windows窗体应用程序,窗体取名FormMain,在窗体中放一个PictureBox,取名为picFlagOfChina,并将Dock属性设置为Fill。程序代码中用到了窗体事件Load和Resize,程序代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ChineseFlag
{
    public partial class FormMain : Form
    {
        public FormMain()
        {
            InitializeComponent();
        }

        private void FormMain_Load(object sender, EventArgs e)
        {
            PaintFlag();
        }

        //修改窗体大小时发生
        private void FormMain_Resize(object sender, EventArgs e)
        {
            PaintFlag();
        }

        /// <summary>
        /// 在图片框 picFlagOfChina 中绘制国旗
        /// </summary>
        private void PaintFlag()
        {
            picFlagOfChina.BackColor = Color.Red;
            picFlagOfChina.Image = new Bitmap(
                picFlagOfChina.Width, picFlagOfChina.Height);

            Graphics g = Graphics.FromImage(picFlagOfChina.Image);

            Point[] p = new Point[] { };

            p = PentacleA(this.Width, this.Height);
            g.FillPolygon(Brushes.Yellow, p);

            p = PentacleB(this.Width, this.Height);
            g.FillPolygon(Brushes.Yellow, p);

            p = PentacleC(this.Width, this.Height);
            g.FillPolygon(Brushes.Yellow, p);

            p = PentacleD(this.Width, this.Height);
            g.FillPolygon(Brushes.Yellow, p);

            p = PentacleE(this.Width, this.Height);
            g.FillPolygon(Brushes.Yellow, p);
        }

        //大星
        private Point[] PentacleA(int width, int height)
        {
            return new Point[] 
            { 
                new Point((int)(width / 30.0 * 5), (int)(height / 20.0 * 2)),
                new Point((int)(width / 30.0 * 5.7), (int)(height / 20.0 * 4.1)),
                new Point((int)(width / 30.0 * 8), (int)(height / 20.0 * 4.1)),
                new Point((int)(width / 30.0 * 6), (int)(height / 20.0 * 5.3)),
                new Point((int)(width / 30.0 * 6.8), (int)(height / 20.0 * 7.3)),
                new Point((int)(width / 30.0 * 5), (int)(height / 20.0 * 6.1)),
                new Point((int)(width / 30.0 * 3.2), (int)(height / 20.0 * 7.3)),
                new Point((int)(width / 30.0 * 4), (int)(height / 20.0 * 5.3)),
                new Point((int)(width / 30.0 * 2), (int)(height / 20.0 * 4.1)),
                new Point((int)(width / 30.0 * 4.3), (int)(height / 20.0 * 4.1)),
            };
        }

        //工人星
        private Point[] PentacleB(int width, int height)
        {
            return new Point[] 
            { 
                new Point((int)(width / 30.0 * 9.2), (int)(height / 20.0 * 2.5)),
                new Point((int)(width / 30.0 * 9.6), (int)(height / 20.0 * 2)),
                new Point((int)(width / 30.0 * 9.3), (int)(height / 20.0 * 1.4)),
                new Point((int)(width / 30.0 * 9.95), (int)(height / 20.0 * 1.7)),
                new Point((int)(width / 30.0 * 10.45), (int)(height / 20.0 * 1.1)),
                new Point((int)(width / 30.0 * 10.36), (int)(height / 20.0 * 1.85)),
                new Point((int)(width / 30.0 * 11), (int)(height / 20.0 * 2.1)),
                new Point((int)(width / 30.0 * 10.34), (int)(height / 20.0 * 2.25)),
                new Point((int)(width / 30.0 * 10.3), (int)(height / 20.0 * 2.95)),
                new Point((int)(width / 30.0 * 9.9), (int)(height / 20.0 * 2.3))
            };
        }

        //农民星
        private Point[] PentacleC(int width, int height)
        {
            return new Point[] 
            { 
                new Point((int)(width / 30.0 * 11), (int)(height / 20.0 * 4.1)),
                new Point((int)(width / 30.0 * 11.65), (int)(height / 20.0 * 3.8)),
                new Point((int)(width / 30.0 * 11.55), (int)(height / 20.0 * 3.05)),
                new Point((int)(width / 30.0 * 12.05), (int)(height / 20.0 * 3.6)),
                new Point((int)(width / 30.0 * 12.7), (int)(height / 20.0 * 3.3)),
                new Point((int)(width / 30.0 * 12.35), (int)(height / 20.0 * 3.98)),
                new Point((int)(width / 30.0 * 12.9), (int)(height / 20.0 * 4.5)),
                new Point((int)(width / 30.0 * 12.1), (int)(height / 20.0 * 4.3)),
                new Point((int)(width / 30.0 * 11.8), (int)(height / 20.0 * 5)),
                new Point((int)(width / 30.0 * 11.7), (int)(height / 20.0 * 4.2))
            };
        }

        //小资星
        private Point[] PentacleD(int width, int height)
        {
            return new Point[] 
            { 
                new Point((int)(width / 30.0 * 11.1), (int)(height / 20.0 * 6.7)),
                new Point((int)(width / 30.0 * 11.8), (int)(height / 20.0 * 6.7)),
                new Point((int)(width / 30.0 * 12), (int)(height / 20.0 * 6)),
                new Point((int)(width / 30.0 * 12.2), (int)(height / 20.0 * 6.7)),
                new Point((int)(width / 30.0 * 12.9), (int)(height / 20.0 * 6.7)),
                new Point((int)(width / 30.0 * 12.35), (int)(height / 20.0 * 7.1)),
                new Point((int)(width / 30.0 * 12.55), (int)(height / 20.0 * 7.8)),
                new Point((int)(width / 30.0 * 12), (int)(height / 20.0 * 7.4)),
                new Point((int)(width / 30.0 * 11.45), (int)(height / 20.0 * 7.8)),
                new Point((int)(width / 30.0 * 11.65), (int)(height / 20.0 * 7.1))
            };
        }

        //民资星(工人星向下平移7个单位)
        private Point[] PentacleE(int width, int height)
        {
            return new Point[] 
            { 
                new Point((int)(width / 30.0 * 9.2), (int)(height / 20.0 * 9.5)),
                new Point((int)(width / 30.0 * 9.6), (int)(height / 20.0 * 9)),
                new Point((int)(width / 30.0 * 9.3), (int)(height / 20.0 * 8.4)),
                new Point((int)(width / 30.0 * 9.95), (int)(height / 20.0 * 8.7)),
                new Point((int)(width / 30.0 * 10.45), (int)(height / 20.0 * 8.1)),
                new Point((int)(width / 30.0 * 10.36), (int)(height / 20.0 * 8.85)),
                new Point((int)(width / 30.0 * 11), (int)(height / 20.0 * 9.1)),
                new Point((int)(width / 30.0 * 10.34), (int)(height / 20.0 * 9.25)),
                new Point((int)(width / 30.0 * 10.3), (int)(height / 20.0 * 9.95)),
                new Point((int)(width / 30.0 * 9.9), (int)(height / 20.0 * 9.3))
            };
        }
    }
}

END

© 著作权归作者所有

北风其凉

北风其凉

粉丝 119
博文 498
码字总数 463468
作品 4
朝阳
程序员
私信 提问
C# 绘制Word图形、组合图形

一、序言 在Office Word中,支持在Word文档中插入类型非常丰富的形状,包括线条、矩形、基本形状(诸如圆形、多边形、星形、括号、笑脸等等图形)、箭头形状、公式形状、流程图、旗帜图形、标...

E_iceblue
2018/06/06
0
0
Java学习:使用StAX写XML - 绘制中国国旗的SVG文件

本文是我在学习《Java核心技术》第九版卷II(高级特性)时写的一段代码。原书作者为(美)Cay S. Horstmann,Gary Cornell,译者为陈昊鹏、王浩、姚建平等。我的Java版本为1.8 之前写过一个B...

北风其凉
2015/12/13
127
0
Xembly学习(二):Xembly脚本基本语法与几个XML生成实例

Xembly是一个类似汇编语言的命令式语言,可以用来操作XML文档。本文给出了Xembly从下载、编译、运行示例的详细方法。我电脑中的操作系统为 Windows7家庭普通版(Service Pack 1),JDK版本为...

北风其凉
2016/02/15
69
0
Java学习:使用DOM写XML - 绘制中国国旗的SVG文件

本文是我在学习《Java核心技术》第九版卷II(高级特性)时写的一段代码。原书作者为(美)Cay S. Horstmann,Gary Cornell,译者为陈昊鹏、王浩、姚建平等。我的Java版本为1.8 下面代码可以绘...

北风其凉
2015/12/11
563
1
“贴图~”贴后续~

前几天为贴图事发了个“贴”,现已被网主安置到“IT大杂烩”坛底了。见http://www.oschina.net/bbs/thread/9539?lp=13 今天有朋友要看贴图,用“六间房”又发了个贴图。看了很“顺眼”,右下...

zctwx
2010/07/09
177
1

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
687
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
39
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
25
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
74
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
72
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部