Win32_GDI_五星红旗绘制
五星红旗画法
- 设置矩形长与高的比为3:2
- 把矩形分为四个相等的长方形

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

- 定位大五角星圆心位置,x为宽的5份,y为高的5份
- 计算五角星五个点的坐标
|
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 为圆点坐标
- 用画多边形画五角星
|
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的顺序画的,
所有要重新调整数组中坐标位置

- 用相同方法绘制其他四个小五角星
- 第一个小星坐标为宽的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_五星红旗绘制的更多相关文章
- Html5 绘制五星红旗
Html5+JavaScript 在Canvas上绘制五星红旗,具体思路如下图所示: 绘制思路在上图中已有说明,具体代码如下: <script type="text/javascrip ...
- HTML5 canvas 绘制五星红旗
这个例子并不是自己写的,在网上找的案列,仿照写的,,,自己真的公布董这些算法,看完这个例子还是有一点模糊,,, 如果谁看的比较明白,指点一下,,,多谢!!!! <!doctype html> ...
- GDI+绘制五星红旗
五星红旗是由红色背景,加5个黄色五角星组成.绘制一个五星红旗的思路,就是先定义一个五角星的自定义控件,然后通过设置五角星的大小.位置.旋转角度等属性,组合成一个五星红旗. 五角星自定义控件代码: pu ...
- 通过CSS绘制五星红旗
任务要求: 1.创建一个div作为红旗旗面,用CSS控制其比例宽高比为3:2,背景为红色. 2.再创建五个小的div,用CSS控制其大小和位置. 3.用CSS同时控制每个小div的大小.边框和位置,同 ...
- canvas绘制五星红旗
代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...
- HTML5用canvas绘制五星红旗
在HTML5一览中,我们提到html 5被冠以很多高帽,其中最高的一顶.备受争议的就是"Flash杀手".IT评论界老喜欢用这个词了,杀手无处不在.不管是不是杀手,HTML 5引进 ...
- 用canvas绘制标准的五星红旗
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- iOS可视化动态绘制连通图
上篇博客<iOS可视化动态绘制八种排序过程>可视化了一下一些排序的过程,本篇博客就来聊聊图的东西.在之前的博客中详细的讲过图的相关内容,比如<图的物理存储结构与深搜.广搜>.当 ...
- 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)
0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...
- 使用UIBezierPath绘制图形
当需要画图时我们一般创建一个UIView子类, 重写其中的drawRect方法 再drawRect方法中利用UIBezierPath添加画图 UIBezierPath的使用方法: (1)创建一个Bez ...
随机推荐
- .NET 日志系统-3 结构化日志和集中日志服务
.NET 日志系统-3 结构化日志和集中日志服务 系列文章 认识.NET 日志系统 https://www.cnblogs.com/ZYPLJ/p/17663487.html .NET 认识日志系统- ...
- C语言自动编译执行脚本
C语言自动编译执行脚本 在Linux上面用命令行写一些简单的C语言程序,总是遇到一个问题,代码写完后要先编译后运行,而且编译生成的可执行文件默认还是a.out,自己去加参数去改有觉得十分麻烦,所以干脆 ...
- 量子位(qubit)发微
上一篇文章我们讲了量子计算机的一些概念,文章不短,但是信息量很少.这里继续深入量子机来揭开qubit的神秘面纱. 这篇文章会有一些数学概念,不过很简单 量子叠加 量子叠加非常重要,因为qubit就是利 ...
- ST 表整体二分解法
整体二分时遍历数组从 \(mid\) 开始的最大值再合并就可以了,时间 \(O(n \log n + q)\) 空间 \(O(n)\). #include<bits/stdc++.h> / ...
- 使用docker搭建ELK分式日志同步方案
ELK作为业界最常用日志同步方案,我们今天尝试一下使用docker快速搭建一套ELK方案.ELK使用国内加速源拉取的镜像比较旧,有条件的朋友可以拉取官网的源.elasticsearch作为日志储存库( ...
- SpringBoot获取请求头信息
Http 头信息 HTTP 头(Header)是一种附加内容,独立于请求内容和响应内容. HTTP 协议中的大量特性都通过Header信息交互来实现,比如内容编解码.缓存.连接保活等等. reques ...
- Nuxt框架中内置组件详解及使用指南(三)
title: Nuxt框架中内置组件详解及使用指南(三) date: 2024/7/8 updated: 2024/7/8 author: cmdragon excerpt: 摘要:"Nux ...
- SDL3 入门(5):纹理渲染
创建纹理 有三个 API 可以用来创建纹理: SDL_CreateTexture 参数少,使用方便,适用于创建简单的纹理 SDL_CreateTextureFromSurface 适用于从已有图像数据 ...
- oeasy教您玩转python - 001 - # 换行插入
先跑起来 Python 什么是 Python? Python 很好用 适合初学者 而且在各个领域都很强大 后来居上 上图可以点开 python3 早已有之 最终逆风翻盘 当然 java 也 ...
- 美团VS饿了么,到底谁更胜一筹?
最近啊,收到一个粉丝的投稿,我发现他在美团和饿了么都去面试过. 这俩企业大家应该都经常用吧,咱点外卖的时候,我有时候就琢磨,到底他俩谁更厉害点. 今天咱们就瞅瞅,在面试这块儿谁更难一些. (目前都只有 ...