既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
前提首先得有vs2022 (任意版本都行 再去下载easyx库)
下载链接 下载之后按时 VS对应版本 ,如果·1不是vs2022,就下载对于的版本
3.初识easyx
先通过一个小程序初始一下easyx ,下面这个程序的功能是画一个⚪
#include <easyx.h>//easyx库
#include <Windows.h>//system 的头文件
int main() {
//初始化图像界面(黑窗口) 640(宽) x 480(高)
initgraph(640,480);
//构建需要的图形 画一个以(x=320,y=240)为圆心的一个圆,半径为200的像素
circle(320, 240, 200);
system("pause");//暂停 一下
//关闭图形界面
closegraph();
return 0;
}
展示↓
6.坐标
坐标默认原点在窗口的左上角,X轴向右为正,Y 轴向下为正,度量单位是像素点
5.设备
- 一种是默认的绘图窗口(黑窗口)
- 另一种是IMAGE对象。通过SetWorkinglmage()函数可以设置当前用于绘图的设备。设置当前用于绘图的设备后,所有的绘图函数都会绘制在该设备上。
6.认识RGB
用RGB宏合成颜色,实际上合成出来的颜色是一个十六进制的的整数。
RGB(R红色,G绿色,B蓝色)
每个颜色的值都是从0~255 (数值越高对应颜色越浅)
后面颜色变量需要使用到
7.头尾函数及头文件
头文件
#include <graphics.h>
初始化函数
//width 指定窗口的宽度 height 指定窗口的高度
initgraph(int width,int heigh,int flag=NULL);//用于初始化绘图窗口(创建窗口)
其中flag
有三种形式
若要同时实现,则需要使用 | 隔开
initgraph(x,y,NOCLOSE | NOMINIMIZE);
接受窗口(3种方式任选其一,通常放在倒数第二)**
getch(); <conio.h>
getchar();//接受图形 <stdio.h>
system("pause");//也可以用这种方式接受图片 <windows.h>
如果没有则会出现以下情况,直接弹出
![]](https://img-blog.csdnimg.cn/1fb0b871b2a843e4a4d93b8849a46b9c.png)
关闭窗口**
closegraph();//关闭图形 不含参数 一般放最后
清空函数
cleardevice()
结合刚开始那个程序
情况一:
cleardevice();//清空内容,但是背景不会修改(不含参)
circle(320, 240, 200); //画圆
cleardevice(); //清空内容
情况二:
circle(320, 240, 200);
setbkcolor(WHITE);//设置白色的背景
cleardevice();//清空内容 但是不清空背景
8.颜色函数
set开头的函数通常放于最前面
颜色常量
有三种方式:RGB、大写英文单词、六个十六进制颜色链接.
setcolor(RGB(0,0,0));
setcolor(BLACK);
setcolor(0x000000);
setcolor
设置前景颜色 (字体颜色
setlinecolor
和线条颜色settextcolor
)。
void setcolor(颜色变量);
setlinecolor 【设置当前画线颜色】
void setlinecolor(颜色变量);
settextcolor 【设置当前文字颜色】
void settextcolor(颜色变量);
setbkcolor 【设置当前绘图背景色】
void setbkcolor(颜色变量);
setfillcolor 【设置图案填充和文字输出时的背景模式】
void setfillcolor(颜色变量);
9.样式函数
(1)setbkmode
void setbkmode(int mode);
mode参数:
OPAQUE 不透明 默认用当前背景填充。
TRANSPARENT 背景是透明的, 用于背景上叠加字体
(2)setlinestyle 【设置当前画线样式 】
俩种方式
方式1:
void setlinestyle(
const LINESTYLE\* pstyle//指向画线样式 LINESTYLE 的指针。
);
方式2:
void setlinestyle(
int style,//直线样式、端点样式、连接样式
int thickness = 1,
const DWORD \*puserstyle = NULL,
DWORD userstylecount = 0
);
//设置线条样式 setlinestyle(样式,厚度);
10.图形
常用的图形
(1)circle【圆】
void circle( int x, int y, int radius);
//(x,y) 坐标 radius:半径
(2)fillcircle 【画填充圆(有边框)】
使用当前线形和当前填充样式 参数同上
(3)solidcircle 【画填充圆(无边框)】
使用当前填充样式绘制
(4)line 【画直线】
void line(int x1,int y1,int x2,int y2);
//(x1,y1):起始点 (x2,y2) :终止点
line(320, 240, 200,123); //↓
连续画10条平行线
#define \_CRT\_SECURE\_NO\_WARNINGS 1
#include <stdio.h>
#include <easyx.h>
int main() {
initgraph(640, 480);
for(int y = 0; y <= 480; y += 48) {
line(0, y, 640, y);
}
getchar();//接受图形 #include <conio.h>
closegraph();//关闭图形
return 0;
}
(5)putpixel 【画点】
void putpixel (int x, int y, COLORREF color) //第三个参数是颜色变量
//putpixel( 34, 232, RED);
有点小 放大看
11.文字
settextcolor(颜色);//设置当前文字颜色
settextstyle(高度,宽度,字体);//设置字体样式 eg. "黑体"
//如果高度,宽度为0,则比例自适应。
textheight(字符串);//获取字符串实际占用的像素高度
textwidth(字符串);//获取字符串实际占用的像素宽度
outtextxy(int x,int y,字符串);//在指定位置输出字符串
下面是文字居中的程序
VS2022报错看这篇文章
#define \_CRT\_SECURE\_NO\_WARNINGS 1
#include <stdio.h>
#include <graphics.h>
#include <easyx.h>
int main()
{
initgraph(1040, 600, SHOWCONSOLE);//设置图形边框
setbkcolor(BLUE);//设置背景颜色
cleardevice();//覆盖之前背景颜色
setfillcolor(RED);//填充颜色
fillrectangle(400, 200, 600, 300);//设置一个有边框矩形(边框默认白色 且居中 )
settextstyle(20, 0, \_T("楷体"));//设置字体样式
settextcolor(YELLOW);//设置字体颜色
setbkmode(TRANSPARENT);//设置字体背景颜色(透明)
char arr[] = "Easyx";//定义一个字符串
int height = (100 - textheight(arr)) / 2;//计算空隙高度
int width = (200 - textwidth(arr)) / 2;//计算空隙宽度
outtextxy(400 + width, 200 + height, arr);//加上原先高宽,并输出字符串
getchar();//接受图形
closegraph();//关闭图形
return 0;
}
效果:
12.文件获取图片
还有IMAGE类型 可以看官网 下面只是简单的调用背景
// 从图片文件获取图像(bmp/gif/jpg/png/tif/emf/wmf/ico)
void loadimage(
IMAGE\* pDstImg, // 保存图像的 IMAGE 对象指针
LPCTSTR pImgFile, // 图片文件名
int nWidth = 0, // 图片的拉伸宽度
int nHeight = 0, // 图片的拉伸高度
bool bResize = false // 是否调整 IMAGE 的大小以适应图片 通常不用
);
JPG图像不支持透明背景
如果创建 IMAGE 对象的时候没有指定宽高,可以通过 Resize 函数设置。对于没有设置宽高的 IMAGE 对象执行 loadimage 会将其宽高设置为和读取的图片一样的尺寸。直接填写图片路径
#include <easyx.h>
int main() {
// 绘图窗口初始化
initgraph(700, 600);
// 读取图片至绘图窗口
loadimage(NULL, \_T("C:\\Users\\27285\\Pictures\\Saved Pictures\\zz.jpg"));//路径 vs2022需要+ \_T 不然报错
// loadimage(NULL,\_T("C:\\Users\\27285\\Pictures\\Saved Pictures\\zz.jpg"),500,400); //
getchar();
closegraph();
}
把图片放到源文件所在的文件夹中 直接使用
文件名.格式
#include <easyx.h>
#include <iostream>
int main() {
// 绘图窗口初始化
initgraph(700, 600);
// 读取图片至绘图窗口
loadimage(NULL, \_T("zz.jpg"));
getchar();
closegraph();
}
13.鼠标消息函数
// 鼠标消息
// 支持如下消息:
WM_MOUSEMOVE 鼠标移动
WM_MOUSEWHEEL 鼠标滚轮拨动
![img](https://img-blog.csdnimg.cn/img_convert/7be16fb1a76ad4e5a37608780b77620f.png)
![img](https://img-blog.csdnimg.cn/img_convert/060a9fd321eda83d672973a06e1f6714.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
pg"));
getchar();
closegraph();
}
13.鼠标消息函数
// 鼠标消息
// 支持如下消息:
WM_MOUSEMOVE 鼠标移动
WM_MOUSEWHEEL 鼠标滚轮拨动
[外链图片转存中...(img-QqWJKLG0-1715744596719)]
[外链图片转存中...(img-iAA4IEMV-1715744596720)]
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**