GDI+绘制五星红旗
五星红旗是由红色背景,加5个黄色五角星组成。绘制一个五星红旗的思路,就是先定义一个五角星的自定义控件,然后通过设置五角星的大小、位置、旋转角度等属性,组合成一个五星红旗。
五角星自定义控件代码:
public partial class MyStar : Control
{
public MyStar()
{
InitializeComponent();
} protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe); Graphics g = pe.Graphics;
PointF[] points = new PointF[]
{
new PointF(Center.X, Center.Y - Radius),
new PointF((float)(Center.X + Radius * Math.Sin( * Math.PI / )), (float)(Center.Y - Radius * Math.Cos( * Math.PI / ))),
new PointF((float)(Center.X + Radius * Math.Sin( * Math.PI / )), (float)(Center.Y + Radius * Math.Cos(* Math.PI / ))),
new PointF((float)(Center.X - Radius * Math.Sin( * Math.PI / )),(float)( Center.Y + Radius * Math.Cos( * Math.PI / ))), new PointF((float)(Center.X - Radius * Math.Sin( * Math.PI / )), (float)(Center.Y - Radius * Math.Cos( * Math.PI / ))),
}; GraphicsPath path = new GraphicsPath(FillMode.Winding);
path.AddLine(points[], points[]);
path.AddLine(points[], points[]);
path.AddLine(points[], points[]);
path.AddLine(points[], points[]);
path.AddLine(points[], points[]);
path.CloseFigure(); g.SmoothingMode = SmoothingMode.AntiAlias;
g.RotateTransform(Angle);
g.FillPath(new SolidBrush(ColorTranslator.FromHtml("#FFDF00")), path);
} /// <summary>
/// 中心点
/// </summary>
public Point Center { get; set; } /// <summary>
/// 半径
/// </summary>
public int Radius { get; set; } /// <summary>
/// 旋转角度
/// </summary>
public float Angle { get; set; }
}
如上的Center、Radius、Angle都是public类型暴露出来的公共属性,以便在初始化时动态的设置MyStar相关属性。
然后创建一个窗体(450*300),并拖动一个Panel容器。
在VS中编译后会在工具栏生成MyStar控件,我们在窗体的Load事件中动态的添加MyStar控件即可。
private void Form1_Load(object sender, EventArgs e)
{
this.panel1.BackColor = Color.Red; MyStar c1 = new MyStar();
c1.Angle = 0F;
c1.Location = new System.Drawing.Point(, );
c1.Size = new System.Drawing.Size(, );
c1.Center = new Point(, );
c1.Radius = ; MyStar c2 = new MyStar();
c2.Angle = 20F;
c2.Location = new System.Drawing.Point(, -);
c2.Size = new System.Drawing.Size(, );
c2.Center = new Point(, );
c2.Radius = ; MyStar c3 = new MyStar();
c3.Angle = -20F;
c3.Location = new System.Drawing.Point(, );
c3.Size = new System.Drawing.Size(, );
c3.Center = new Point(, );
c3.Radius = ; MyStar c4 = new MyStar();
c4.Angle = 0F;
c4.Location = new System.Drawing.Point(, );
c4.Size = new System.Drawing.Size(, );
c4.Center = new Point(, );
c4.Radius = ; MyStar c5 = new MyStar();
c5.Angle = 20F;
c5.Location = new System.Drawing.Point(, );
c5.Size = new System.Drawing.Size(, );
c5.Center = new Point(, );
c5.Radius = ; this.panel1.Controls.Add(c1);
this.panel1.Controls.Add(c2);
this.panel1.Controls.Add(c3);
this.panel1.Controls.Add(c4);
this.panel1.Controls.Add(c5); this.panel1.Click += (ss, ee) => { this.Close(); };
}
效果图:

GDI+绘制五星红旗的更多相关文章
- 通过GDI+绘制 验证码
只为了记录下自己的学习历程,方便日后查看 现在开始言归正传,以下为其完整代码附上 using System; using System.Collections.Generic; using Syste ...
- Html5 绘制五星红旗
Html5+JavaScript 在Canvas上绘制五星红旗,具体思路如下图所示: 绘制思路在上图中已有说明,具体代码如下: <script type="text/javascrip ...
- C#利用GDI+绘制旋转文字等效果
C#中利用GDI+绘制旋转文本的文字,网上有很多资料,基本都使用矩阵旋转的方式实现.但基本都只提及按点旋转,若要实现在矩形范围内旋转文本,资料较少.经过琢磨,可以将矩形内旋转转化为按点旋转,不过需要经 ...
- C# 使用GDI+绘制漂亮的MenuStrip和ContextMenuStrip皮肤
通过上面的效果截图可以看到,重绘后的MenuStrip和ContextMenuStrip可以添加自己的LOGO信息,实现了类似OFFICE2007的菜单显示效果. .NET对菜单控件的绘制提供了一个抽 ...
- HTML5 canvas 绘制五星红旗
这个例子并不是自己写的,在网上找的案列,仿照写的,,,自己真的公布董这些算法,看完这个例子还是有一点模糊,,, 如果谁看的比较明白,指点一下,,,多谢!!!! <!doctype html> ...
- MFC 用gdi绘制填充多边形区域
MFC 用gdi绘制填充多边形区域 这里的代码是实现一个三角形的绘制,并用刷子填充颜色 在OnPaint()函数里面 运用的是给定的三角形的三个点,很多个点可以绘制多边形 CBrush br(RGB( ...
- GDI绘制时钟效果,与系统时间保持同步,基于Winform
2018年工作之余,想起来捡起GDI方面的技术,特意在RichCodeBox项目中做了两个示例程序,其中一个就是时钟效果,纯C#开发.这个CSharpQuartz是今天上午抽出一些时间,编写的,算是偷 ...
- 『备注』GDI+ 绘制文本有锯齿,透明背景文本绘制
背景: GDI+ 绘制文本 时,如果 背景是透明的 —— 则会出现 锯齿. //其实,我不用这三个 属性 好多年了 //而且,这三个属性 在关键时刻还有可能 帮倒忙 //关键是:这三个属性,鸟用都没有 ...
- C#GDI+ 绘制线段(实线或虚线)、矩形、字符串、圆、椭圆
C#GDI+ 绘制线段(实线或虚线).矩形.字符串.圆.椭圆 绘制基本线条和图形 比较简单,直接看代码. Graphics graphics = e.Graphics; //绘制实线 )) { pen ...
随机推荐
- ThinkPhp 使用PhpExcel导出导入多语言文件
在ThinkPHP 里已经实现了多语言功能,只要在指定的目录下创建对应的语言文件并填充内容,即可实现多语言功能 而多语言的翻译却是一个很麻烦的事情,因为客户特定的行业问题导致我们翻译可能是不准确的 于 ...
- .NET 开源开发项目【翻译】
原文地址 本文列出了 .NET 开源开发项目(open source developer projects).意在包括对开发过程的所有方面有所帮组的项目.对于消费项目(consumer project ...
- 服务器能远程连接,网络连接正常,但是外网域名Ping不通,浏览器中打不开网站
服务器能远程连接成功,但在浏览器中打不开任何网站,出现这个问题一般是安装什么软件引起IE的相关设置做了变动或者是服务器中了病毒引起的,或是服务器的DNS设置是错误的. 一.先检查服务器DNS是否正确 ...
- file命令与magic file【转】
Linux基础——file命令与magic file [日期:2013-06-03] 来源:Linux社区 作者:sin90lzc [字体:大 中 小] //本文基于CentOS6.3 dist ...
- linux达人养成计划学习笔记(七)—— 用户登录查看命令
一.查看用户登录信息 1.命令格式 w 2.命令结果 第一行信息是:系统当前时间 系统运行总时间 登录用户数量 一分钟/五分钟/十分钟的系统负载(越大越差) 二.who命令 1 ...
- 2013-2015 Aaronyang的又一总结,牧童遥指纳尼村
我没有时间去唠叨自己的事,可是你们是我喜欢的人,ay很愿意写给你们分享:去年的万人阅读的总结链接:<没学历的IT人生没那么悲催,献给程序员们> 提前声明:本文不良反应:请自备垃圾桶,准备装 ...
- 11G新特性 -- archival(long-term)backups
在oracle 10g中,提供了backup ... keep功能来重载配置好的retention策略. 在oracle 11g中,可以重定义backup ... keep命令来创建长期保留的备份,称 ...
- 2D空间中求线段与圆的交点
出处: https://answers.unity.com/questions/366802/get-intersection-of-a-line-and-a-circle.html 测试脚本(返回值 ...
- IOS开发 文件路径
1.开发平台路径: /Developer/Platforms 此路径下一般有三个目录,分别是mac电脑.模拟器.iphone真机 MacOSX.platform iPhoneSimulator.pla ...
- 基于vue-cli项目添加服务端渲染
两个示例的git地址: 1. 我的环境 2. 方式一:使用prerender-spa-plugin插件获得SSR的效果. 2.1 说明 2.2 初始化 1 vue init webpack vue-p ...