C语言学习第八课(EasyX图形库)

第八课【注意:该图形库只能在c++文件下运行】

1,窗口函数

·initgraph(int width,int height,int flag =NULL);//创建窗口
//width 指定窗口宽度
//height 指定窗口高度
//flag 窗口样式,默认为NULL
//注意:若想要同时看到控制台和图形窗口,可将flag设置为SHOWCONSOLE,若想要多种功能,可用'|'连接

·closegraph();//关闭窗口
·cleardevice();//清空绘图设备

2,坐标与设备

1,坐标默认原点在窗口的左上角,x轴向右为正,y轴向下为正,度量单位是像素点
2,设备:【1,默认的绘图窗口2,可通过SetWorkingImage()函数设置当前用于绘图的设备】

3,图形绘制函数

1,绘图函数从填充样式分类:无填充、有边框填充、无边框。
//如画圆:circle()无填充、fillcircle()有边框填充、solidcircle()无边框填充    
2,给图形加颜色
·setfillcolor(颜色英文大写)//设置填充颜色,只有当画的图形为填充时,设置颜色才有效果
·setlinecolor(颜色英文大写)//设置线条颜色
3,设置样式
·setlinestyle(线条样式,线条粗细);

4,图形形状划分

circle画圆 ellipse画椭圆 pie画扇形 画多边形polygon
rectangke画矩形 roundrect画圆角矩形 line画线 putpixel画点

5,设置颜色

·光的三原色:红、绿、蓝;
·RGB:合成颜色的宏,实际上合成出来的颜色是一个十六进制的整数;
·RGB(红色部分,绿色部分,蓝色部分);
·每个颜色部分的值范围在[0~255];

6,文字绘制函数(用于在图形窗口上绘制文字)【注意:图形绘制按顺序,避免覆盖文字】

1,基本函数
·outtextxy(int x,int y,LPCTSTE str);//在指定位置输出字符串【注意:出现错误,需使用多字节字符集
·settextcolor(颜色英文大写);//设置当前文字颜色
·setbkmode(TRANSPARENT);//设置文字背景模式为透明
·settextstyle(int nHeight,int nWidth,LPCTSTR lpszFace)//设置字体样式
//nHeight 指定高度
//nWidth 字符的平均宽度,如果为0,则比例自适应
//lpszFace 字体名称
 2,用于文本的垂直和水平居中显示
·textheight(LPCTSTR str);//获取字符串实际占用的像素高度
·textwidth(LPCTSTR str);//获取字符串实际占用的像素宽度
 

7,图形处理函数(用于在窗口上显示图片)

1,首先定义一个变量(对象),然后将图片加载进变量才可使用。
  //使用easyx提供的类型定义:IMAGE;如:IMAGE img;【注意:不能直接赋值】
2,加载图片(从文件中读取图像)【注意:加载函数放在循环画之外,防止重复加载卡顿】
loadimage(IMAGE* pDstImg,LPCTSTR pImgFile,int nWidth=0,int nHeight=0,bool bReasize=false)
//pDstImg 保存图像的IMAGE对象指针
//pImgFile 图片文件名
//nWidth=0 图片的拉伸宽度    
//nHeight=0 图片的拉伸高度    
//bResize=false  是否调整IMAGE的大小以适应图片    
3,显示图片(在当前设备上绘制图像 )
putimage(int dstX,int dstY,IMAGE* pSrcImg,DWORD dwRop=SRCCOPY);    
//dstX 绘制位置的x坐标    
//dstY 绘制位置的y坐标    
//pSrcImg 要绘制的IMAGE对象指针    
//dwRop=SRCCOPY 三元光栅操作码  
4,绘制透明贴图【注意:先绘制掩码图,再绘制原图】【原图黑色背景,掩码图白色背景】
例子:
    IMAGE img[2];
    loadimage(&img[0],图片0路径);
    loadimage(&img[1],图片1路径);
    putimage(x,y,&img[0],SRCAND);//SPCAND和SRCPAINT为颜色的二进制操作
    putimage(x,y,&img[1],SRCPAINT);

特别篇:制作掩码图(photoship)

1,找到素材,打开ps;

2,明确注意事项:【原图要黑色背景(物体要原色),掩码图白色背景(物体为黑色)】

3,选中左边的第四个图标,右键,选择魔棒工具

4,有几个基本功能:

1,背景图:魔棒点背景,右键选反向,然后Ctrl+c复制到一个新建的文档,文档要选择黑色背景;//背景图制作完成
2,掩码图:(1)在菜单栏-图像-模式-选择灰度【可使图像全部变灰】
     (2)在菜单栏-图像-调试-阈值-改为1(3)在菜单栏-图像-调试-反向//掩码图制作完成

8,(EasyX内的函数)鼠标消息函数(获取鼠标信息)

1,使用easyx提供的类型:MOUSEMSG;//如:MOUSEMSG msg;
2,再用MoustHit(),判断是否有鼠标消息(左键、右键、中间、移动)
3,如果有鼠标消息,就可以进行接收鼠标消息;//如:msg=GetMouseMsg();
4,鼠标消息主要成员:
//uMsg  当前鼠标消息
//x 当前鼠标x坐标
//y 当前鼠标y坐标
【uMsg可用来判断当前鼠标消息是什么消息】
//主要的两个消息:
//WM_LBUTTONDOWM 鼠标左键消息    
//WM_RBUTTONDOWN 鼠标右键消息
例子:
    initgraph(640,480);
    while(1)
    {
        if(MouseHit())
        {
            MOUSEMSG msg=GetMouseMsg();
            switch(msg.uMsg)
            {
                case WM_LBUTTONDOWM://左键按下
                     break;
                case WM_RBUTTONDOWN://右键按下
                     break;
            }
        }
    }

9,防止闪屏

1,在循环画之前加上:BeginBatchDraw();//开始批量绘图
2,在循环中,画图之下加上:FlushBatchDraw();
3,在循环下面,加上:EndBatchDraw();//结束批量绘图
4,如有需要可以延迟程序:Sleep();//让程序睡眠多少毫秒

10,非EasyX函数–键盘消息函数(获取键盘按键消息)

1,获取鼠标消息函数【用来控制x,y坐标】
  //getch(); 需要头文件 conio.h
    ·getch();需要使用返回值来判断//使用_kbhit()判断有无键盘消息
    ·非ASCII表字符:上(72),(80),左(75),右(77)
    
  //GetAsyncKeyState(键值); 需要头文件 windows.h
    ·GetAsyncKeyState(键值);需要传入一个键值
    ·如果按下这些返回真:上(VK_UP),(VK_DOWN),左(VK_LEFT),右(VK_RIGHT)
    //【注意:也可使用大写字母表示】
  //【注意:(graphics.h包含了windows.h,也包含了放音乐的头文件:mmsystem.h)】
    
    

11,EasyX其他函数

·GetHWnd();//获取窗口句柄,获取之后可以用来操作窗口【弹窗】
//HWND hwnd=GetHWnd();//获得窗口句柄
//SetWindowText(hwnd,标题名称);//修改窗口标题
//MessageBox(hwnd,对话框内容,标题名称,MB_OKCANCEL);

12,windowsAPI播放音乐

1,首先包含头文件windows.h【注意:(graphics.h包含了windows.h,也包含了放音乐的头文件:mmsystem.h)2,加载静态库 winmm.lib //#pragma comment(lib,"winmm.lib")
3,使用mciSendString函数播放音乐
    例子:
    //mciSendString("open hh.mp3 alias BBB",NULL,0,NULL); 打开音乐//alias为路径取别名
    //mciSendString("play BBB repeat",NULL,0,NULL);播放音乐//加上repeat可以重复播放
    //mciSendString("close BBB",NULL,0,NULL);关闭音乐
    
    
    
    

你可能感兴趣的:(C语言基础笔记,c语言)