应用软件的Loading界面是一个软件的重要组成部分。请利用所学的GDI+知识,通过在窗体上绘制彩虹的方式,完成一个儿童学习类软件的Loading界面,功能要求如下所示:


软件需求及编码提示:
 该软件只需要一个窗体,该窗体标题为:“彩虹绘制—2017XXXXXXX”。请依据你的情况填写你的真实学号。
 设置窗体的双缓存为true,避免绘图是,窗体闪烁。
 添加Form_Paint事件,在该事件中,获取Graphics对象,对应代码提示如下。

 绘制彩虹的核心方法是Graphics对象的FillPie方法,该方法的参数解释如下:通过绘制7个同心的不同颜色扇形,即可绘制出彩虹图案。
FillPie(Brush brush, Rectangle rect, float startAngle, float sweepAngle);
摘要:填充椭圆所定义的扇形区的内部,该椭圆System.Drawing.RectangleF 结构和两条射线指定。
brush:用什么颜色的笔刷绘制该扇形。
rect:它表示定义该扇形区所属的椭圆的边框。
startAngle:起始角度。
sweepAngle:沿startAngle扫过的角度。

 第一个参数brush,7个颜色的取值分别是:Brushes. Red, Brushes.Orange,Brushes.Yellow,Brushes.Green,Brushes.GreenYellow,Brushes.Blue,Brushes.Purple。
 第三个参数,由于窗体坐标系如下所示:通过上述坐标系图,我们可以知道startAngle应该设置为180。

 第四个参数sweepAngle,由于该值随着时间变化,因此,我们需要在方法外定义一个float类型的 sweepAng变量,在timer中不断增加或减少该值,然后在FillPie方法中,使用该变量。利用扫过角度的不断变化,引起所绘制的图形的变化。注意:timer控件是否启用,以及在Tick事件中,调用this. Invalidate ()或者this. Refresh(),更新画面。
 为了能将彩虹绘制在窗体中心,在Form_Load事件中获取窗体中心点。

 在GDI+中屏幕坐标系的原点在窗体左上角,根据所获得窗体中心变量center以及,每个扇形的半径,结合下图,可以轻松构造出每个扇形应该绘制在的外界矩形Rectangle,即FillPie的第二个参数rect。7个扇形的半径取值分别是:160,140,120,100,80,60,40。

 为了保证绘制出的彩虹只有180°,请在timer的tick事件中加入判断,当sweepAng大于180°的时候,重新置为0°

代码部分:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace rainbow
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Paint(object sender, PaintEventArgs e){Graphics g = e.Graphics;g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;g.FillPie(Brushes.Red,  center.X, center.Y, 320,320,180, a);g.FillPie(Brushes.Orange, center.X+20, center.Y+20,280,280, 180, a);g.FillPie(Brushes.Yellow, center.X + 40, center.Y + 40, 240, 240, 180, a);g.FillPie(Brushes.Green, center.X + 60, center.Y + 60, 200, 200, 180, a);g.FillPie(Brushes.GreenYellow, center.X + 80, center.Y + 80, 160, 160, 180, a);g.FillPie(Brushes.Blue, center.X + 100, center.Y + 100, 120,120, 180, a);g.FillPie(Brushes.Purple, center.X + 120, center.Y + 120, 80, 80, 180, a);}Point center;private void Form1_Load(object sender, EventArgs e){center = new Point(this.Width/2,this.Height/2);}public static float a = 0;int i = 0;private void timer1_Tick(object sender, EventArgs e){if (a < 180){a++;}else{a = 0;}this.Invalidate();}}
}

运行结果:

使用了一下视频转gif工具,结果不尽人意

桌面应用程序——绘制彩虹相关推荐

  1. C语言+EasyX库实现--绘制彩虹

    1.程序运行环境(必读) Visual C++ 6.0.Visual Studio 2010 ~ Visual Studio 2022 等支持EasyX图形库的软件均可以使用,实现相应功能. ---- ...

  2. 使用C++代码创建一个Windows桌面应用程序

    下面六星教育整理使用C++代码创建一个Windows桌面应用程序,供大家学习参考. WinMain函数 Windows应用程序的唯一程序入口. 函数原型 int WINAPI WinMain { HI ...

  3. 桌面应用程序UI框架有哪些

    Electron 是一种基于Node.js和Chromium的跨平台框架,可以用于构建桌面应用程序.Electron使用HTML.CSS和JavaScript编写,可以使开发人员使用Web技术开发桌面 ...

  4. python用turtle画彩虹_Python语言,绘制彩虹场景

    在生活中,我们总会遇到各种各样的困难,我们都能听到鼓励我们的话,风雨之后才能见彩虹! 今天就和大家分享一下,使用编程代码去绘制我们心中的彩虹! 使用Python语言编程,来绘制彩虹的程序在下面! 彩虹 ...

  5. 学生python编程--学习列表绘制彩虹

    学生python编程--学习列表绘制彩虹 # _*_ coding: UTF-8 _*_ # 开发团队: 信息化未来 # 开发人员: Administrator # 开发时间:2022/8/23 11 ...

  6. 创建传统的Windows桌面应用程序

    文章目录 前言 代码 运行结果 前言 目标:创建的示例应用程序,使用 Windows API 显示 "Hello,Windows desktop!" 应用程序. 教学资料:[SDK ...

  7. 关于跨平台桌面应用程序开发的趋势

    牢骚:C++需求还是很大,但是太需要积累了,初级程序员能干的越来越少:高money岗位 ZhaoP APP 搜一下基本都集中在游戏或服务器后台开发. 一.桌面应用程序 桌面应用程序,又称为 GUI 程 ...

  8. 桌面应用程序 azure_如何开始使用Microsoft Azure-功能应用程序,HTTP触发器和事件队列...

    桌面应用程序 azure "Serverless" architecture is all the rage in tech land at the moment, includi ...

  9. 桌面应用程序 azure_Azure Logic应用程序用例–黑色星期五

    桌面应用程序 azure This blog gives an overview of how Azure Serverless technologies came to rescue when th ...

最新文章

  1. java学习:对synchronized的测试
  2. 梦幻桌面wmv_【 梦幻桌面 】梦幻桌面(DreamScene桌面美化工具)新版下载 - U大师
  3. Centos6安装Zabbix3.4
  4. 在Objective-C中创建一个抽象类
  5. 加快tensorflow模型预测速度
  6. # 日期待t_2020最值得期待的几款新车
  7. 1777:文件结构“图”
  8. C#中事务的简单使用
  9. 多用as少用强制类型转换
  10. 架构解读丨Volcano作业资源预留设计原理
  11. Spring简单的文件配置
  12. 设计模式——代理模式与装饰模式的异同
  13. 六石管理学:人是不可以被说服的,除非自己想明白
  14. trnsys and matlab 联合仿真常见错误解决方案
  15. Ubuntu 16.04 单显卡安装Nvidia驱动+GTX750显卡安装CUDA 9.1+cuDNN 7.1.3
  16. 数据结构WSADATA
  17. vue函数定义的多种写法
  18. 【JAVA】-- 黄金矿工小游戏(二)(实现思路+每步代码)
  19. 全国大学生节能减排社会实践与科技竞赛最新作品模板资料国家一等奖完整申报书说明书ppt
  20. 记一次Mysql并发死锁,引出的问题及讨论

热门文章

  1. 迅为IMX8MM开发板Yocto系统使用Gstarwmra播放音频和视频
  2. Linux下生成随机数与字符串
  3. 腕能助手android9,腕间应用助手
  4. 强训之【求最大连续的bit数和最近公共祖先】
  5. 喜大普奔,电脑版微信可以刷朋友圈了!
  6. 解决brew: Warning: Unexpected method ‘arch‘ called on Cask portfolioperformance.
  7. 列表滚动改变Toolbar透明度
  8. html密码框显示明文,控制密码输入框是否显示明文
  9. 如何下载网页的字体图标相关文件
  10. 2019年中山大学数据科学与计算机学院研究生统考机试