五星红旗画法

  1. 设置矩形长与高的比为3:2
  2. 把矩形分为四个相等的长方形

  1. 把左上角宽分为15份,高分为10份

  1. 定位大五角星圆心位置,x为宽的5份,y为高的5份
  2. 计算五角星五个点的坐标

void SetFivePoints(POINT* pts,int nCount,int r, int angle, POINT pOrg)

{

for (int i=0;i<nCount;i++)

{

//POINT pt1;  // 第一个点在正上方,所以角度为90

pts[i].x = pOrg.x + (LONG)(r*cos((angle+i*72 )* PI / 180));

pts[i].y = pOrg.y - (LONG)(r*sin((angle+i*72) * PI / 180));

}

}

pts为点坐标数组

nCount 为数组个数

r 为半径

angle 为角度

pOrg 为圆点坐标

  1. 用画多边形画五角星

POINT pts[5] = { 0 };

SetFivePoints(pts, 5, nHeight*3, 90, pOrg);

POINT pNewPts[5] = { pts[0],pts[2],pts[4],pts[1],pts[3] };

Polygon(hdc, pNewPts, 5);

画线是从第一点到到3,再到5,再到2,再到4的顺序画的,

所有要重新调整数组中坐标位置

  1. 用相同方法绘制其他四个小五角星
  2. 第一个小星坐标为宽的10份,高的2份位置, 第一点起始角度为70

第二个小星坐标为宽的12份,高的4份位置,第一点起始角度为120

第三个小星坐标为宽的12份,高的7份位置,起始角度为90

每四个小星坐标为宽的10份,高的9份位置,起始角度为70

// 定位第一个小五星圆心

POINT ptOrg1 = { nWidth * 10,nHeight * 2 };

// 调整第一点的起始角度

SetFivePoints(pts, 5, nHeight, 70, ptOrg1);

POINT pNewPts1[5] = { pts[0],pts[2],pts[4],pts[1],pts[3] };

Polygon(hdc, pNewPts1, 5);

// 定位第二个小五星圆心

ptOrg1 = { nWidth * 12,nHeight * 4 };

SetFivePoints(pts, 5, nHeight, 120, ptOrg1);

POINT pNewPts2[5] = { pts[0],pts[2],pts[4],pts[1],pts[3] };

Polygon(hdc, pNewPts2, 5);

// 定位第三个小五星圆心

ptOrg1 = { nWidth * 12,nHeight * 7 };

SetFivePoints(pts, 5, nHeight, 90, ptOrg1);

POINT pNewPts3[5] = { pts[0],pts[2],pts[4],pts[1],pts[3] };

Polygon(hdc, pNewPts3, 5);

// 定位第四个小五星圆心

ptOrg1 = { nWidth * 10,nHeight * 9 };

SetFivePoints(pts, 5, nHeight, 70, ptOrg1);

POINT pNewPts4[5] = { pts[0],pts[2],pts[4],pts[1],pts[3] };

Polygon(hdc, pNewPts4, 5);

最后去掉辅助线

效果为:

Win32_GDI_五星红旗绘制的更多相关文章

  1. Html5 绘制五星红旗

    Html5+JavaScript 在Canvas上绘制五星红旗,具体思路如下图所示: 绘制思路在上图中已有说明,具体代码如下: <script type="text/javascrip ...

  2. HTML5 canvas 绘制五星红旗

    这个例子并不是自己写的,在网上找的案列,仿照写的,,,自己真的公布董这些算法,看完这个例子还是有一点模糊,,, 如果谁看的比较明白,指点一下,,,多谢!!!! <!doctype html> ...

  3. GDI+绘制五星红旗

    五星红旗是由红色背景,加5个黄色五角星组成.绘制一个五星红旗的思路,就是先定义一个五角星的自定义控件,然后通过设置五角星的大小.位置.旋转角度等属性,组合成一个五星红旗. 五角星自定义控件代码: pu ...

  4. 通过CSS绘制五星红旗

    任务要求: 1.创建一个div作为红旗旗面,用CSS控制其比例宽高比为3:2,背景为红色. 2.再创建五个小的div,用CSS控制其大小和位置. 3.用CSS同时控制每个小div的大小.边框和位置,同 ...

  5. canvas绘制五星红旗

    代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...

  6. HTML5用canvas绘制五星红旗

    在HTML5一览中,我们提到html 5被冠以很多高帽,其中最高的一顶.备受争议的就是"Flash杀手".IT评论界老喜欢用这个词了,杀手无处不在.不管是不是杀手,HTML 5引进 ...

  7. 用canvas绘制标准的五星红旗

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. iOS可视化动态绘制连通图

    上篇博客<iOS可视化动态绘制八种排序过程>可视化了一下一些排序的过程,本篇博客就来聊聊图的东西.在之前的博客中详细的讲过图的相关内容,比如<图的物理存储结构与深搜.广搜>.当 ...

  9. 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)

    0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...

  10. 使用UIBezierPath绘制图形

    当需要画图时我们一般创建一个UIView子类, 重写其中的drawRect方法 再drawRect方法中利用UIBezierPath添加画图 UIBezierPath的使用方法: (1)创建一个Bez ...

随机推荐

  1. WAV音频文件按秒切片段

    wav音频文件按秒切片段 import wave def split_wav_by_seconds(input_file, output_file, start_second, end_second) ...

  2. [WPF]用HtmlTextBlock实现消息对话框的内容高亮和跳转

    动手写一个简单的消息对话框一文介绍了如何实现满足常见应用场景的消息对话框.但是内容区域的文字仅仅起到信息展示作用,对于需要部分关键字高亮,或者部分内容有交互性的场景(例如下图提示信息中的"w ...

  3. Salt安装部署

    Salt安装部署 一:salt简介 ​ 早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这些脚本复杂且难以维护.系统管理员面临的问题主要是1.系统配置管理,2.远程执行命令,因此诞生了 ...

  4. 什么是Selenium Grid?如何搭建Selenium Grid?

    标签(空格分隔): 测试架构 什么是测试基础架构? 测试基础架构指的是,执行测试的过程中用到的所有基础硬件设施以及相关的软件设施.因此,我们也把测试基础架构称之为广义的测试执行环境.通常来讲,测试基础 ...

  5. Top cluster 树分块

    写点基础的东西.随便写的,勿喷. top cluster 一个 cluster 是一个联通子图,且至多有两个点与其他部分连接 这两个点被称为 boundary node 其余点被称为 internal ...

  6. 火山引擎数智平台赋能火花思维,A/B测试加速创新

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群.   在数字化浪潮下,火花思维凭借其对数据驱动的理解与实践,搭上了业务快速增长的快车.这一效果的背后,离不开火花思 ...

  7. Python 潮流周刊#60:Python 的包管理工具真是多啊(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  8. UE Spline 样条网格体组件添加碰撞

    最近做的一个功能是通过Spline 生成管道模型. 如下图所示: 遇到的一个问题是需要给生成的管路加上碰撞.其中需要两个重要的步骤: 设置SplineMeshComponent的碰撞预设 找到&quo ...

  9. Doris failed to initialize storage reader. tablet=106408, res=[NOT_IMPLEMENTED_ERROR]to be implemented

    Apache Doris 2.3 以下的版本会存在一个 bug,导致数据在合并时存在异常,在后续查询该字段数据时会提示 [1105] [HY000]: errCode = 2, detailMessa ...

  10. Centos7下安装配置最新版本Jenkins(2.452.3)

    1.基础环境配置 1.1 服务器下载Jenkins安装包 下载地址:https://www.jenkins.io/download/ 下载命令:wget https://get.jenkins.io/ ...