C/C++图型化编程

发布时间:2023年12月24日

一、创建图形化窗口:

1.包含头文件:

  • graphics.h:包含已经被淘汰的函数
  • easyx.h:只包含最新的函数

2.两个函数就可以创建窗口:?

  • 打开:initgraph(int x,int y,int style);
  • 关闭:closegraph();

3.窗口坐标的设置:

横向x坐标

纵向y坐标

#include<stdio.h>
#include<graphics.h>

int main() {
	initgraph(800, 600, 1);
	while (1);
	closegraph();
	return 0;
}

二、 设置图形窗口属性:

颜色设置:

  • 设置线条颜色? ? ? setlinecolor(颜色);
  • 设置背景颜色? ? ? setbkcolor(颜色);
    • 颜色宏:颜色的英语大写单词
      • RGB配置:三原色?
        • 绿色????????RGB(13,242,24)?
  • 刷新
    • cleardevice();
    • #include<stdio.h>
      #include<graphics.h>
      
      int main() {
      	initgraph(800, 600, 1);
      
      	setbkcolor(RED);
      	cleardevice();
      
      
      	while (1);
      	closegraph();
      	return 0;
      }

三、使用Easyx实现基本绘图功能(基本绘图函数):

  • 线? ? ? ? line(int x,int y,int xx,int yy);
  • 圆? ? ? ? circle(int x,int y,int r);
    • ?填充圆? ? ? 设置填充颜色-->setfillcolor();
      • 带线:filercircle(int x,int y,int r);
      • 不带线:solidcircle(int x,int y,int r);
  • ?矩形? ? ? ? ? rectangle(int x,int y,int xx,int yy);
    • ?填充矩形? ? ? 设置填充颜色-->setfillcolor();
      • 带线:filerectangle(int x,int y,int xx,int yy);
      • 不带线:solidrectangle(int x,int y,int xx,int yy);

?例:画棋盘。

#include<graphics.h>

void Draw() {
	//画棋盘
	initgraph(400, 400);
	setbkcolor(RGB(63, 114, 233));
	setlinecolor(BLACK);
	cleardevice();
	for (int i = 0; i <= 400; i += 20) {
		line(0, i, 400, i);
		line(i, 0, i, 400);
	}		
	while (1);
	closegraph();
}

int main() {
	Draw();
	return 0;
}

?

四、鼠标交互:

五、按键交互:

六、使用Easyx实现贴图功能:

  • 原样贴图? ? ? 图像是什么样就怎么贴
    • IMAGE变量去表示图片
    • 加载图像
      • loadimage(IMAGE*img,URL);? ? ? ?
      • loadimage(IMAGE*img,URL,int width,int height);?
    • 显示图像
      • putimage(int x,int y,IMAGE*img);? ? ? ????

??

  • 透明贴图? ? ? 去背景的贴图
    • 通过图像的颜色二进制运算达到去背景的效果
    • 认识素材
      • 掩码图
      • 背景图
    • 按照特定步骤贴图即可
      • SECAND? ? ? ? 位与
      • SECPAINT? ? ? ?位或
  • png贴图? ? ? ??

文章来源:https://blog.csdn.net/2301_80585598/article/details/135175946
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。