使用 C# Graphics 绘图来绘制一个足球

背景

2022卡塔尔世界杯是足球爱好者的狂欢,这与我毫无关系,作为一个缺乏运动的人,还是不要去看人家玩命的运动了。虽然不看球,不过这波热度的持续冲击,还是让我在朋友圈刷到了结局 ———— 球王梅西如愿以偿捧得金杯,后起之秀姆巴佩加冕金靴。但作为程序员,为了增加一些参与感我就拿 C# 画个足球图案吧。

Graphics 介绍

图案的绘制方法非常简单,使用 C# 的 System.Drawing 命名空间中的 Graphics 类的方法即可在窗体、控件、图像或其他绘图表面上绘制文本、线条、图像和其他图形。

下面是一些常见的 Graphics 类方法:

•DrawLine: 绘制一条从一个点到另一个点的直线。•DrawRectangle: 绘制一个矩形。•DrawEllipse: 绘制一个椭圆。•DrawString: 绘制文本。•FillRectangle: 填充一个矩形。•FillEllipse: 填充一个椭圆。•Clear: 清除图形表面上的所有图形。

要使用 Graphics 类,需要创建一个 Graphics 对象,并使用其绘图方法绘制图形。例如,要在窗体上绘制一条直线,可以使用以下代码:

using System.Drawing;private void Form1_Paint(object sender, PaintEventArgs e)
{Graphics g = e.Graphics;g.DrawLine(Pens.Black, 0, 0, 100, 100);
}

还可以使用 Graphics 类的 DrawImage 方法绘制图像,使用 DrawCurve 方法绘制曲线,使用 DrawPolygon 方法绘制多边形,等等。

足球绘制

使用 DrawPolygon 方法绘制多边形,我们可以简单的绘制一个足球图案。绘制足球就要绘制五边形,或者六边形。可以使用 Math.Cos 和 Math.Sin 函数来计算五边形的顶点坐标,比如已知五边形的中心坐标点 Point(centerX,centerY) 和边长 sideLength 后,我们可以通过下面的公式计算获取五个顶点的坐标:

Point point1 = new Point(centerX + (int)(sideLength * Math.Cos(Math.PI / 5)), centerY - (int)(sideLength * Math.Sin(Math.PI / 5)));
Point point2 = new Point(centerX + (int)(sideLength * Math.Cos(3 * Math.PI / 5)), centerY - (int)(sideLength * Math.Sin(3 * Math.PI / 5)));
Point point3 = new Point(centerX + (int)(sideLength * Math.Cos(5 * Math.PI / 5)), centerY - (int)(sideLength * Math.Sin(5 * Math.PI / 5)));
Point point4 = new Point(centerX + (int)(sideLength * Math.Cos(7 * Math.PI / 5)), centerY - (int)(sideLength * Math.Sin(7 * Math.PI / 5)));
Point point5 = new Point(centerX + (int)(sideLength * Math.Cos(9 * Math.PI / 5)), centerY - (int)(sideLength * Math.Sin(9 * Math.PI / 5)));

然后将其连接起来绘制多边形进行填充颜色即可:

// 创建五边形路径
Point[] points = { point1, point2, point3, point4, point5 };
g.DrawPolygon(Pens.Black, points);
g.FillPolygon(new SolidBrush(Color.Black), points);

但是绘制了中间的五边形后,就需要根据五边形继续计算五个六边形的坐标,这样就非常麻烦了,经过几番尝试后,我找到了一种比较简单的绘制足球的方法:首先绘制一个六边形,然后选择一个外部的圆心对这个六边形坐标进行旋转 72 度,这样旋转几次,我们就画好了五个六边形,填充白色。然后在画五边形的代码前面加画一个填充黑色的大圆,足球就这样画好了:

// 获取绘图对象
Graphics g = this.CreateGraphics();int width = 100;  // 六边形的宽度
int height = 100; // 六边形的高度
int x = 100;       // 六边形的横坐标
int y = 200;       // 六边形的纵坐标Point center = new Point(x + width + width, y + height / 2);// 最外围大圆直径
int d = 4 * width + width / 2;Rectangle rect = new Rectangle(center.X - d / 2, center.Y - d / 2, d, d);
g.FillEllipse(new SolidBrush(Color.Black), rect);
g.DrawEllipse(new Pen(Color.Black), rect);Point[] points = {new Point(x, y),new Point(x + width / 2, y - height / 2),new Point(x + width, y),new Point(x + width, y + height),new Point(x + width / 2, y + height + height / 2),new Point(x, y + height)
};// 创建一个矩阵
Matrix transform = new Matrix();// 旋转绘制六边形
for (int i = 0; i < 5; i++)
{// 绘制g.DrawPolygon(Pens.Black, points);g.FillPolygon(new SolidBrush(Color.White), points);// 以 center 为中心进行 72  度的旋转transform.RotateAt(72, center);// 应用旋转,下次绘制g.Transform = transform;
}

绘制效果

最后代码运行的绘制效果如下:

431f250ec74ee77428c8c8ffaa5f6750.png

效果

项目代码开源在 gitcode,仓库地址:https://gitcode.net/marin1993/football

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/24347.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧教育信息化建设解决方案

建设思路及解决方案 以数据整合、应用融合、服务聚合为目标&#xff0c;充分利用已有的成果&#xff0c;联接全校物联感知设备、构筑智能化安防体系&#xff0c;打造泛在化的学习环境、实现一体化的运维管控&#xff0c;最终形成智慧环境、智慧管理、智慧服务、智慧教学、智慧资…

布谷蓝途:易知微「可视大脑助力智慧教育」主题分享精彩实录

如今&#xff0c;大数据技术在教育领域的应用与普及正驶入“快车道”&#xff0c;但仍然存在资源管理分散、数据各自为阵、运营模式传统等痛点&#xff0c;如何借助新技术、新机遇并充分发挥大数据在教育教学中的支撑作用成为重中之重。 布谷蓝途作为国内前沿的大数据方案与服…

某智慧教育公共服务平台视频下载教程

近期疫情原因上网课朋友找我下载一些某教育平台视频。简单分析一下。 目录 开发者模式 查找地址 复制地址 下载视频 开发者模式 首先&#xff0c;万能大法F12看看能不能有收获。 查找地址 F12后找到【网络】选项&#xff0c; 在检索框中搜索一下【m3u8】,最号刷新一下网…

尚硅谷智慧校园 —— 2、登录功能实现

目录 1、登录的过程 2、验证码功能实现 3、登录校验功能实现 3.1、在 service 及其实现类添加登录验证方法 3.2、controller 方法 4、登录校验后从登录页跳转到首页 4.1、完成 service 方法及其实现类 4.2、完成 controller 方法 5、解决登录后用户头像错误问题 1、登…

一文读懂5G智慧教育:42个应用场景如何改变教育

随着5G的到来&#xff0c;教育形态也将会发生巨大变化&#xff0c;而智慧教育作为5G的一个重要应用&#xff0c;到底有哪些细分场景呢&#xff1f; 一、5G虚拟现实教育 作为5G智慧教育的主战场&#xff0c;VR/AR 与教育结合呈现的全新的教学体验&#xff0c;可极大地提升学生学…

ChatGPT,openai科学教育有助于我们理解和掌握人工智能技术

这个时代&#xff0c;人工智能技术已经在各行各业中得到广泛应用&#xff0c;涉及到的领域越来越广泛&#xff0c;例如医疗保健、金融、制造业、物流等等。因此&#xff0c;了解科学的基础原理和科技的应用方法已经成为了一个必要的技能。 科学教育有助于我们理解和掌握人工智能…

智慧班牌源码源,SaaS云平台端、智慧校园管理平台端、家长/教师微信移动端、智慧班牌学生端

智慧电子班牌系统包括&#xff1a;SaaS云平台端、智慧校园管理平台端、家长/教师微信移动端、智慧班牌学生端四大软件平台。 文末获取联系&#xff01; 技术架构&#xff1a; 1、使用springboot框架Javavue2 2、数据库MySQL5.7 3、移动端小程序使用小程序原生语言开发 4、电子班…

干货 | 智慧教育平台生成式人工智能应用的安全要求

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。 第一部分&#xff1a;编制说明 标准制定的基本原则主要包括以下四个方面&#xff1a; 综合性&#xff1a;本标准全面漫盖了智慧教育平台ChatGPT安全保护的要求&#xff0c;以便用户参考&#xf…

打造智慧幼儿园!学会一招,快速实现

近年来各地幼儿园因为门禁松懈而造成的幼儿走失或被陌生人接走的事件也时有发生。给幼儿园门禁管理模式的改善敲响了警钟&#xff01; 孩子的入离园环节是幼儿园一日工作的重中之重&#xff0c;入园要保证孩子都是健康的&#xff0c;离园老师再把孩子健健康康地交还给家长。 这…

数据可视化:揭开“智慧校园”新篇章,助力新时代教育信息化

随着移动互联网、物联网等新一代信息技术的快速发展&#xff0c;建设智慧校园已经具备了成熟的技术条件。自从教育部启动教育信息化2.0计划后&#xff0c;建设智慧校园已成为我国教育信息化发展目标&#xff0c;无论是国家教育事业发展的十三五规划&#xff0c;还是十四五规划&…

智慧教室app

前言 README.md文件里写的非常详细&#xff0c;下面补充几个遇到的问题及解决方案。 安装requirements.txt文件所指定的包 1&#xff09;关于cmake 总的来说&#xff0c;问题不大&#xff0c;不用考虑。参考 2&#xff09;关于dlib 报错问题&#xff1a;ERROR: Failed bui…

ChatGPT:为教育创新提供五大机遇

随着智能技术的不断发展&#xff0c;ChatGPT在教育场景中的创新价值可能比我们能够意识到的还要多。比如它可以自动处理作业、在线答疑&#xff0c;可以辅助语言学习、实时沟通&#xff0c;甚至还可以用于评估诊断、科学研究。国内外关于利用ChatGPT实现教育创新的场景描绘已经…

智慧教育

智慧教育 文章目录 前 言一、智慧教育的内涵二、智慧教育系统1.建立物理系统2.实现纵向、横向、端到端的集成3.教育大数据 总结 前 言 随着物联网以及大数据处理技术的快速发展&#xff0c;教育信息化迎来了新的机遇和挑战&#xff0c;智慧教育是当代教育信息化的新形态&#…

ChatGPT教育领域的智慧伙伴|小智AI

ChatGPT丨小智ai丨chatgpt丨人工智能丨OpenAI丨聊天机器人丨AI语音助手丨GPT-3.5丨OpenAI ChatGPT|GPT-4|GPT-3|人机对话|ChatGPT应用|小智ai|小智ai|小智ai|小智ai|小智AI|chatgpt小智AI 在现代教育领域&#xff0c;人工智能正日益发挥着重要作用&#xff0c;而ChatGPT作为智…

真正的官方ChatGPT镜像

视频演示 真正的官方ChatGPT4.0镜像&#xff0c;代码解释器和官方所有插件都有&#xff0c;爽爆了 地址&#xff1a; https://www.bilibili.com/video/BV17M4y1s7Hi/?spm_id_from333.999.0.0地址 镜像地址&#xff1a; https://ai.aiforme.cloud/需要找我要授权码才能使用~…

TCGA_改版后STAR-count处理方法

TCGA改版后&#xff0c;workflow.type只有STAR-counts数据&#xff0c;先对所尝试的几种处理方法进行记录&#xff1a; R version 4.1.2 &#xff1b; TCGAbiolinks version 2.23.11 方法1 最新版TCGA 矩阵整理&#xff0c;百分百复现成功_sayhello1025的博客-CSDN博客 一、…

探秘WAIC镇馆之宝:AI“钓鱼”AI,人类看戏

杨净 发自 WAIC量子位 | 公众号 QbitAI 一个专攻大模型的“黑客”&#xff0c;竟摇身一变&#xff0c;当选人工智能大会&#xff08;WAIC&#xff09; “镇馆之宝”&#xff1f;&#xff01; WAIC镇馆之宝展区上&#xff0c;一众人工智能领域创新成果亮相。 不管从科技含量、市…

深度长文 | 数据安全共享技术发展综述及在能源电力领域应用研究

开放隐私计算 编者按 数据要素的流通共享与协同应用是数字时代中数据要素市场培育的核心内容&#xff0c;数据安全共享技术能够有效实现数据的安全共享&#xff0c;避免“数据孤岛”现象、隐私泄露事件等.本文对国内外数据安全共享技术研究成果及进展进行了全面综述.首先&…

Unity Open Day 北京站-游戏专场:AI 驱动反外挂:游戏作弊治理新时代

【获取 2023 Unity Open Day 北京站演讲 PPT】 张本梁&#xff1a;下面和大家分享一下我们团队在游戏安全领域AI方面的尝试和落地。 第一块&#xff0c;做游戏安全比较核心的是情报信息的收集。我们必须知道我们的对手——做外挂、打金等黑灰产团队的情报信息&#xff0c;这是我…

Alpha阶段功能规格书

一、概念 FaaS一种不需要关心部署细节的垂直自动化无需人为干预&#xff0c;以一定周期定时发起的任务静态页面不需要动态数据刷新的单一html页面 二、典型用户 开发入门初学者/爱好者 姓名守好嘉年龄18用户市场比例30%用户重要性较为重要典型场景刚刚学了一门新语言&#…