C++学习day--04 图形化开发环境搭建

news2024/9/24 3:27:39

1、为什么要搭建图形化开发环境

因为很多初学者学习C++就是单纯的控制台打印输出,很枯燥,我们今后在做项目或者在学习的过程中,采用图形化方式相结合的方法学习,再学习中体会编程带来的快乐。先说明一下,奇牛课程是边学习边做项目的课,我们学习一些知识点就可以做部分项目。在做项目过程中,我们会熟悉使用easyx图形库的使用。

图形开发环境
1. 使用 MFC WPF ,使用方便, 但是需要先熟悉 C++, 仅适用于 Windows 平台 .后面就业班专门学习MFC开发。
2. 使用跨平台 QT ,跨平台, 也要先熟悉 C++.就业课专门学习QT开发。
3. 使用图形库 OpenGL OpenGL 非常强大 , 很多大型游戏引擎就直接使用 OpenGL 绘制图像
缺点 : 太复杂 , 不适合初学者 .
4. EasyX,使用简单, 非常适合 C/C++初学者构建图形界面. 同时用来学习/提高 C/C++语言

为什么选择 EasyX?

1. 作为学习、提高 C++ 的重要工具,在实际工作中再根据需要选择其他工具。
2. 开发简单的图形界面应用程序
搭建 EasyX 图形开发环境
1. 先安装 Visual C++2010 VS 的其他版本
在前面的课程中已经安装。
2. QQ 群下载 EasyX 的安装包,或者去官网: EasyX Graphics Library for C++

 点击安装:

然后:

 单击 visual c++ 2010 对应的“安装”按钮(或单击其他版本对应的按钮)

3. 开发第一个图形界面程序
在原项目所在的解决方案中,创建一个新项目(也可以重新创建一个新的解决方案)
右击解决方案,选择“添加” > “新建项目” :

VS 中,一个解决方案可包含多个项目。 

在新项目 G1 中创建一个新文件 mainGraphic.cpp,代码如下:
#include <graphics.h>
// 引用 EasyX 图形库
#include <Windows.h>
int main( void )
{
initgraph(640, 480);
// 初始化图形界面 , 画布大小为 640x480
// 画一个圆
circle(320, 240, 200); // 画圆,圆心 (320, 240) ,半径为 200
system( "pause" );
closegraph();
// 关闭图形界面
}

 把新项目 G1 设置为找个解决方案的“启动项目”,注意:一个解决方案里可以有多个项目,而每次只能运行一个项目,我们运行某个指定的项目就得把该项目设置为启动项目。

运行 :

 把新项目 G1 设置为找个解决方案的“启动项目”并运行

2、图形开发进阶

可参考 easyx 图形库的文档手册 , 学习各个接口的用法 .
效果图:

分析 :

 背景色:用“画图”的拾色器获取。代码如下:

#include <graphics.h>
// 引用 EasyX 图形库
#include <Windows.h>
int main( void )
{
initgraph(640, 480);
// 初始化图形界面 , 画布大小为 640x480
setbkcolor(RGB (64, 128, 128)); // 设置背景色
cleardevice(); // 用背景色清空整个屏幕 ( 整个画布 )
// 画一个圆
setlinecolor(RGB (255, 0, 0));
// 设置划线 ( 画笔 ) 的颜色
setlinestyle( PS_SOLID, 10);
// 设置线条为实线 , 设置线宽为 10 像素
circle(320, 240, 200);
// 画圆,圆心 (320, 240) ,半径为 200
// 输出文本

settextcolor(RGB(255,255,0));
// 设置字体颜色
// 设置字体样式 : 字体高度为 100 像素 , 宽度不指定 , 字体名称为 " 微软雅黑 "
settextstyle(100, 0, " 微软雅黑 " );
outtextxy(170, 190, ( " 无码高清 " )); // 在指定位置输出文本
// 画一条斜线
line(180, 380, 460, 100); // (180,380) (460, 100) 画一条直线
system( "pause" );
closegraph();
// 关闭图形界面
}

 3、 黑客攻击系统-图形界面实现

 效果图:

分析:

 

 图片:600 x 340

实现:

1. 把图片资源(bg.jpg)复制到该项目的目录下,大家也可以用自己的图片:

2. 代码实现: 

mainGraphic.cpp
#include <graphics.h>
// 引用 EasyX 图形库
#include <Windows.h>
int main( void )
{
initgraph(600, 400);
// 初始化图形界面 , 画布大小为 640x480
loadimage(0, ( "bg.jpg" ));
settextcolor(RGB(255,255,0));
// 设置字体颜色
settextstyle(30, 0, " 微软雅黑 " );
rectangle(300, 40, 550, 80);
//( 左上角 x, 左上角 y, 右上角 x ,右上角
outtextxy(310, 45, "1- 网站 404 攻击 " ); // 在指定位置输出文本
rectangle(300, 100, 550, 140);
outtextxy(310, 105, "2- 网站篡改攻击 " ); // 在指定位置输出文本
rectangle(300, 160, 550, 200);
outtextxy(310, 165, "3- 网站攻击修复 " ); // 在指定位置输出文本
rectangle(300, 220, 550, 260);
outtextxy(310, 225, "4- 查看攻击记录 " ); // 在指定位置输出文本
rectangle(300, 280, 550, 320);
outtextxy(310, 285, "5- 退出 " ); // 在指定位置输出文本
system( "pause" );
closegraph();
// 关闭图形界面
}
思考:
各功能菜单,可以进一步完善:
鼠标移动到该菜单项时,整个菜单项就变色,
但鼠标在这个菜单上点击时,菜单项再次变色,并播放一个短暂的音效。
小练习:
效果图:

代码:

#include <graphics.h>
// 引用 EasyX 图形库
#include <Windows.h>
#include <mmsystem.h> // mci 库头文件
#pragma comment ( lib , "winmm.lib" )
int main( void ) {
initgraph(800, 513);
loadimage(0, "jile.jpg" );
mciSendString( "play 极乐净土 .mp3 repeat" , 0, 0, 0); // 重复播放
system( "pause" );
closegraph();
}

3、职场修炼 

工作遇到困难怎么办 , 问还是不问 ?
问题:
做任何有难度的项目,必定会遇到困难,甚至瓶颈。
顾虑:
1. 问同事,会不会显得自己的水平不行,有损个人的逼格形象。
2. 问领导(项目经理、主管等),会不会影响自己在公司的技术地位
3. 憋着不问,可能搞不定,会不会影响项目进度。
案例:南京研究所,某卫星通信项目的芯片移植,进度严重受阻,被迫更换芯片。
职场陷阱: 遇到困难,诉苦,说“我不会”。 试用期,如果常常说“我不会”,将严重影响考评,甚至会被辞退。
案例:某名校(华南理工)毕业生试用期被辞退。
解决方案:
1. 提出具体的问题,越具体越好。
案例:某嵌入式设备的 WEB 服务器不会做。
就问:在 xxx 设备, xxx 操作系统,提供 xxx 功能的 WEB 服务器,怎么做?
2. 同时提出几个备选方案,更好。

4、程序员必备工具:Beyond Compare 3(代码对比工具)

排错的最后武器 - 代码对比工具 ,明明文档或代码是一样的,为什么还是出错?
使用场合:
1. 学习时,和参考代码做比较
2. 开发时,在多个版本之间做比较。

 这个工具前面我们是不会用到,因为前面学习基础语法,不是做项目,等后面做项目,项目有多个版本,找出版本差异这时候这个工具就牛逼了。对这个工具怎么使用,大家可以自己找教程。反正这个工具是后期的一个重要工具。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv6 4.0 使用记录:python推理 OpenCV DNN 推理

目录 1、下载源码 2、下载权重文件 3、配置环境 4、推理 6、ONNX格式导出 权重文件为yolov6list_s.pt 权重为yolov6.pt 7、opencv DNN推理 8、个人总结 1、下载源码 下载最新的4.0版本的 2、下载权重文件 我下的是YOLOv6Lite-S 3、配置环境 cd到项目目录&#xff0c;运…

关于IDEA编译运行时出现 《非法字符: ‘\ufeff‘ 需要class,interface或enum》的解决办法

问题如下 原因&#xff1a;编码问题解决办法&#xff1a;将这些报错的文件拷贝到一个目录中&#xff0c;然后用notpad打开&#xff0c;点击工具类上的 编码&#xff0c;将 以uft8格式编码 转为 以utf8无BOM格式编码&#xff0c;然后保存&#xff0c;再覆盖idea中对应的文件。或…

人脸识别--传统+深度方法

人脸识别算法--非深度方法 在前深度学习时代&#xff0c;非深度的方法探索了不同的人脸识别算法。 先考虑一下非深度学习时代&#xff0c;人脸识别难在哪&#xff1f;或者说目标识别的难点在哪&#xff1f; 图像是一个高度冗余的数据。 * 图像数据中包含大量与语义无关的内容…

Hadoop3.3.1 Windows环境配置

1.解压hadoop-3.3.1.tar.gz 到windows安装路径 D:\h3\hadoop-3.3.1 2.检查Windows jdk是否安装正常 3.下载winutils GitHub - steveloughran/winutils: Windows binaries for Hadoop versions (built from the git commit ID used for the ASF relase) 解压到D:\h3\ 并重命名…

Python每日一练(20230504) 课程表 Course Schedule I/II

目录 1. 课程表 Course Schedule I 2. 课程表 Course Schedule II &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 课程表 Course Schedule I 你这个学期必须选修 numCourses 门课程&a…

五一劳动节程序员应该知道的知识——计算机

前言 现在AI崛起&#xff0c;计算机已经成为我们不可或缺的一部分&#xff0c;几乎在所有行业和领域都有广泛应用 。 五一已经快要过去了&#xff0c;程序员们应该都放假了&#xff0c;那我们是不是应该去了解了解我们的伙伴——计算机&#xff0c;了去解计算机是怎样工作的&am…

在CSDN逮到一个字节10年老测试开发,聊过之后收益良多···

老话说的好&#xff0c;这人呐&#xff0c;一单在某个领域鲜有敌手了&#xff0c;就会闲得蛋疼。前几天我在上班摸鱼刷CSDN的时候认识了一位字节测试开发大佬&#xff0c;在字节工作了10年&#xff0c;因为本人天赋比较高&#xff0c;平时工作也兢兢业业&#xff0c;现在企业内…

REST API 最佳实践

文章目录 0.什么是 REST API&#xff1f;1.REST API 设计建议1.用名词表示资源2.用复数名词表示集合3.在端点上使用嵌套显示关系4.用 HTTP 方法操作资源5.用过滤、排序和分页请求数据6.用 JSON 作为发送和接收数据的格式7.将实际数据包装在 data 字段中8.非资源请求用动词9.考虑…

搭建环境问题集合(jupyter lab和pycharm)

1、python console找到该项目映射位置在哪里&#xff1f; import os print(os.getcwd()) 2、Linux终端运行命令&#xff0c;Ctrlc & Ctrlz 在Linux中&#xff0c;Ctrl Z组合键可以将当前正在运行的进程暂停&#xff0c;并将该进程放到后台去执行。 linux命令行下Ctrlc的作…

uniapp实现小程序打开相册或拍照上传图片附赠兼容H5方法

文章目录 前言一、支持相册选择和拍照二、删除图片三、效果图存在问题 前言 小程序上传图片&#xff0c;或者拍照上传图片&#xff0c;并附带兼容H5上传图片方法&#xff0c;压缩图片。 一、支持相册选择和拍照 支持选择相册和拍照&#xff0c;可以使用uniapp提供的api&#…

arxiv2022 | MolT5:Translation between Molecules and Natural Language

Ambitious goal &#xff01;&#xff01; 任务&#xff1a;molecule captioning and text-guided de novo molecule generation. 论文链接&#xff1a;https://arxiv.org/abs/2204.11817 代码链接&#xff1a;GitHub - blender-nlp/MolT5: Associated Repository for "…

MySQL知识学习03(三大日志详解 binlog、redo log、undo log)

前言 MySQL 日志 主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中&#xff0c;比较重要的还要属二进制日志 binlog&#xff08;归档日志&#xff09;和事务日志 redo log&#xff08;重做日志&#xff09;和 undo log&#xff08;回滚日志&#xf…

【校招VIP】很神奇,把简历上的学校名称和姓名盖住,其它的部分都很常见,那简历通过率一定很低

在五一之前的一场简历指导的直播里面&#xff0c;发现了一份有意思的简历。 大家如果把这份简历的学校和姓名抹掉&#xff0c;会发现好像跟自己写的简历一模一样。 技能、项目等都是很通用的。 也就是说&#xff0c;这份简历你能写&#xff0c;你的同学也可以写&#xff0c;甚…

项目执行落地的6个步骤

项目执行是将项目计划付诸行动的过程&#xff0c;为客户或利益相关者生产可交付的产品或服务&#xff0c;也就是所谓的产品或服务。它发生在规划阶段之后&#xff0c;在此期间&#xff0c;一个团队确定了项目的关键目标&#xff0c;以及时间表和预算。 执行包括协调资源和衡量…

现在的00后测试员这么野?领导:这我真管不了...

马上就要迎来一年一度的毕业季&#xff0c;今年即将有1158万00后毕业生正式踏入职场。虽然00后是最近两年才晋升为新鲜出炉的职场小鲜肉&#xff0c;但在一众前辈的眼中&#xff0c;已经身居重任&#xff0c;期望他们能够成为职场中的一股清流&#xff0c;改变一贯以来的职场风…

I2C工作流程

FM33A0XX的I2C接口只用作主机&#xff0c;且不支持多主机&#xff0c;因此挂在总线上的其他设备都是从机。总线上总是由主机提供同步时钟SCL&#xff0c;SDA数据流方向可以是主机发送从机接收&#xff0c;或者从机发送主机接收。 数据发送流程 1、主机发起 START 时序 2、主机…

比较两种精细结构的迭代次数

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入有3个节点&#xff0c;训练集AB各由5张二值化的图片组成&#xff0c;让A中有6个1&#xff0c;B中全是0&#xff0c;排列组合A &#xff0c;统计迭代次数的顺序。共有5005组不同的排列组合&#xff0c;但只有181个不同的迭代…

C#,生信软件实践(02)——DNA数据库EMBL格式详解及转为FASTA格式文件的源代码

>生信老白写的基础代码.fasta MAYBENOANYUSAGE 1 EMBL 1.1 EMBL组织 欧洲分子生物学实验室EMBL&#xff08;European Molecular Biology Laboratory&#xff09;1974年由欧洲14个国家加上亚洲的以色列共同发起建立&#xff0c;现在由欧洲30个成员国政府支持组成&#xf…

文字流光效果

提示&#xff1a;文字流光动画效果&#xff0c;炫酷标题 前言 提示&#xff1a;以下是本篇文章的代码内容,供大家参考,相互学习 一、html代码 <!DOCTYPE html> <html><head><meta http-equiv"content-type" content"text/html; charsetu…

文献阅读(50)—— Transformer 用于肺癌诊断预测

文献阅读&#xff08;50&#xff09;—— Transformer 用于肺癌诊断预测 文章目录 文献阅读&#xff08;50&#xff09;—— Transformer 用于肺癌诊断预测先验知识/知识拓展文章结构背景文章方法1. 文章核心网络结构2. Time Encoding ViT &#xff08;TeViT&#xff09;3. Tim…