• windows 上的C语言 图形界面设计函数 ( easyx 插件 )


    事先准备  图形库的安装和帮助文档   (这里没有插件)



    1.新建窗口
        initgraph(640,480);//单位 像素
        closegraph();//关闭窗口


    2.画线   颜色(宏定义或者RGB自己调RGB(r,g,b))
        line(100,200,200,400);
        setlinecolor(WHITE);
        //setlinestyle


    3.画图形  颜色和填充色
        rectangle(200,200,400,400);//矩形
        fillrectangle(200,200,400,400);//填充矩形
        solidrectangle(200,200,400,400);//无边框填充矩形
        //三种类型的函数  1.线条无填充 2.只有填充 3.有线条有填充
        setlinecolor(颜色);
        setfillcolor(颜色);



    4.贴图 路径 资源
        loadimage(&img,"文件名",高度,宽度);
        putimage(x,y,&img);

        loadimage(NULL,"文件名",高度,宽度);//直接贴
        loadimage(NULL,L"JPG",MAKEINTRESOURCE(图片ID),高度,宽度);//资源文件  文件名修改为类型加ID的形式


    5.鼠标操作
        MOUSEMSG msg;
        if(MouseHit())//判断有无鼠标信息
        msg=GetMouseMsg();//获取鼠标信息
        switch(msg.uMsg)
        case WM_LBUTTONDOWN:
        case WM_RBUTTONDOWN:

        键盘消息
        #include
        char ch=getch()//获取键盘消息
        if(kbhit())//判断有无鼠标信息



    6.文字输入输出 文字颜色和样式
        outtextxy(_T("hello"),x,y);
        settextcolor(颜色);
        settextstyle(高度,宽度(写0表默认),_T("字体"));
        setbkmode(TRANSPARENT);//设置背景颜色透明



    7.音乐播放
        #include
        #pragma comment(lib,"winmm.lib")
        函数 PlaySound  只能wav格式  可以使用资源文件
        PlaySound("c:\\win95\\media\\The Microsoft Sound.wav", NULL, SND_FILENAME | SND_ASYNC);
        //文件名     SND_FILENAME 表示文件名    SNE_ASYNC表示异步播放(SND_SYNC 同步播放 放完音乐才开始下一步) SND_LOOP  表示循环播放
        PlaySound((LPCTSTR)IDR_STARTWIN, AfxGetInstanceHandle(), SND_RESOURCE | SND_ASYNC);
        //WAV ID    第二个参数是程序的实例句柄
        PlaySound(NULL,NULL,NULL);停止播放

        函数 mciSendSetring  可以放mp3  wav等 不能使用资源文件
        mciSendSetring(L"open 文件名 alias mp3",NULL,NULL,NULL);
        mciSendSetring(L"play mp3",NULL,NULL,NULL);//取别名之后直接播放就行
        可选命令 pause  stop


    代码:

    #include
    // 引用图形库头文件
    #include

    知识点 1:创建的初始化和关闭
    创建窗口: HWND initgraph( int width, int height,
    int flag = NULL); EW_NOMINIMIZE
    关闭窗口:void closegraph();

    知识点 2:位置和颜色函数
    设置原始位置:void setorigin(int x, int y);
    设置背景颜色:void setbkcolor(COLORREF color);
    设置背景模式:void setbkmode(TRANSPARENT);
    设置背景刷新:cleardevice();
    颜色 BLACK-黑色 BLUE-蓝色 GREEN-绿色 RED-红色 YELLOW-黄色 WHITE-白色
    设置填充颜色:void setfillcolor(COLORREF color); 无效
    设置线条样式:void setlinestyle(int style);
    样式如下:PS_DASH--虚线
    PS_DOT--点
    PS_SOLID---实线 PS_NULL--不可见
    设置线条颜色:void setlinecolor(COLORREF color);

    知识点 3:画图形
    画椭圆弧:void arc( int l,int t,int r,int bm,double st,double end
    参数:左顶右底位置。圆弧起点和终点
    画无填充的圆:void circle(
    int x, int y, int radius);半径
    画有填充的圆:void fillcircle( int x, int y, int radius);
    无填充椭圆形: void ellipse(
    int left, int top,
    int right, int bottom);
    填充椭圆:void fillellipse( int left, int top,
    int right, int bottom);
    无填充矩形:void rectangle(int left,int top,int right,int bottom)
    有边框的填充矩形:void fillrectangle(int left,int top,int right,int bottom);
    圆角矩形框:void fillroundrect( int l,int t,int r,int b,int 圆弧宽,int 圆弧高)
    画一条线 :void line( int x1,
    int y1,
    int x2,
    int y2);
    画一个带颜色的点:void putpixel(
    int x, int y, COLORREF color);

    知识点 4:文字处理
    指定位置输出字符串:void outtextxy(
    int x, int y, LPCTSTR str);
    屏幕输出字符串:int drawtext(char* str,RECT* pRect,UINT uFormat);
    参数:字符串,矩形区域地址,文字格式
    DT_CENTER-水平居中和 DT_SINGLELINE 一起使用
    DT_VCENTER-垂直居中和 DT_SINGLELINE 一起使用
    DT_LEFT-左对齐 DT_RIGHT-右对齐 DT_TOP-顶对齐
    DT_INTERNAL-系统字体 DT_NOCLIP-不受区域限制 设置字体颜色:void settextcolor(COLORREF color);
    设置字体属性:settextstyle(int nHeight, int nWidth, "宋体")

    知识点 5:图片处理
    加载图片:从图片文件获取图像(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 的大小以适应图片
    绘制图象: void putimage(
    int dstX,
    // 绘制位置的 x 坐标
    int dstY,
    // 绘制位置的 y 坐标
    IMAGE *pSrcImg,
    // 要绘制的 IMAGE 对象指针
    DWORD dwRop = SRCCOPY
    // 三元光栅操作码)
    对象 IMAGE
    class IMAGE(int width = 0, int height = 0);

    知识点 6:窗口函数
    输入框:bool InputBox(
    LPTSTR pString,
    保存输入字符串
    int
    nMaxCount,
    最大缓存
    LPCTSTR pPrompt = NULL, 提示文字
    LPCTSTR pTitle = NULL,
    标题
    LPCTSTR pDefault = NULL, 用户输入框默认值
    int
    width = 0,
    宽度
    int
    height = 0, 高度
    bool bHideCancelBtn = true); //是否要取消按钮
    输出框:

    知识点 7:鼠标消息
    获取所有消息:m = getmessage(EM_MOUSE | EM_KEY);
    获取鼠标消息:MOUSEMSG GetMouseMsg();堵塞函数
    获取鼠标消息(非堵塞)bool PeekMouseMsg(MOUSEMSG *pMsg, bool bRemoveMsg);
    检测是否有鼠标消息:bool MouseHit();
    鼠标消息结构体:
    struct MOUSEMSG{
    UINT uMsg;
    // 当前鼠标消息 bool mkCtrl;
    // Ctrl 键是否按下
    bool mkShift;
    // Shift 键是否按下
    bool mkLButton;
    // 鼠标左键是否按下
    bool mkMButton;
    // 鼠标中键是否按下
    bool mkRButton;
    // 鼠标右键是否按下
    int x;
    // 当前鼠标 x 坐标(物理坐标)
    int y;
    // 当前鼠标 y 坐标(物理坐标)
    int wheel;
    // 鼠标滚轮滚动值
    };

    */


    代码:

    1. #include // 引用图形库头文件
    2. #include 知识点 1:创建的初始化
    3. #include
    4. int main()
    5. {
    6. //知识点 1: 窗口创建和关闭
    7. initgraph(640, 480);
    8. //知识点 2:颜色
    9. setbkcolor(BLUE);
    10. //cleardevice(); //设置背景后需要画图才行,否则需要清空设备
    11. setlinecolor(WHITE);
    12. setorigin(10, 30); //设置初始位置
    13. setlinestyle(PS_DASH);
    14. setfillcolor(RED);
    15. circle(200, 200, 100);
    16. // 画圆,圆心(200, 200),半径 100
    17. //知识点 3:画图处理
    18. setlinecolor(RGB(0, 255, 255));
    19. setfillcolor(GREEN);
    20. circle(500, 200, 100);
    21. // 画圆,圆心(200, 200),半径 100
    22. arc(50, 50, 400, 120, 3, 3);
    23. fillrectangle(10, 10, 100, 100);
    24. //知识点 4:文字处理
    25. RECT r = { 0, 0, 639, 479 };
    26. drawtext(_T("Hello World"), &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
    27. setbkmode(TRANSPARENT);
    28. settextcolor(RGB(255,25,255));
    29. settextstyle(160, 30, _T("宋体"));
    30. outtextxy(120, 20, "你好");
    31. //知识点 5:图片处理
    32. IMAGE img;loadimage(&img, "./res/bk.jpg", 384, 384);
    33. //putimage(0, 0, &img);
    34. char s[20] = { 0 };
    35. InputBox(s, 10, "请输入半径","半径","10",20,50,false);
    36. int x = atoi(s);
    37. ExMessage m;
    38. while (true)
    39. {
    40. // 获取一条鼠标或按键消息
    41. m = getmessage(EM_MOUSE | EM_KEY);
    42. switch (m.message)
    43. {
    44. //case WM_MOUSEMOVE:
    45. // 鼠标移动的时候画红色的小点
    46. //
    47. MessageBox(NULL, "WM_MOUSEMOVE", "123", MB_OK);
    48. // break;
    49. case WM_LBUTTONDOWN:
    50. // 如果点左键的同时按下了 Ctrl 键
    51. MessageBox(NULL, "WM_LBUTTONDOWN", "123", MB_OK);
    52. break;
    53. case WM_KEYDOWN:
    54. if (m.vkcode == VK_F1)
    55. MessageBox(NULL, "VK_NUMPAD0", "123", MB_OK);
    56. break;
    57. }
    58. }
    59. _getch();
    60. // 按任意键继续
    61. closegraph();
    62. // 关闭绘图窗口
    63. return 0;
    64. }

  • 相关阅读:
    LeetCode题练习与总结:设计推特--355
    云小课|帮您高效快速上传组件至私有依赖库
    搭建一个Vue3+Ts+Vite项目
    反射
    VRJam 推出用于虚拟音乐会和现场直播的Web3场地
    测试和开发的日常互撕,真的不能好好解决嘛?
    c++day5
    给课题组师弟师妹的开荒手册(终篇)
    微信小程序+echart实现点亮旅游地图
    几百行代码实现一个 JSON 解析器
  • 原文地址:https://blog.csdn.net/she666666/article/details/126353818