EasyX图形库基本操作

原理

基于Windows图形编程,将Windows下的复杂程序过程进行封装,仅给用户提供一个简单熟悉的接口。用户对于图形库中函数的调用,最终都会由Windows底层的API实现。

窗口的创建与关闭

  • 创建

    1. 包含 EasyX 图形库的头文件

      #include<graphisc.h> //老版 头文件 可以使用所有函数
      ​
      #include<easyx.h>    //新版 头文件 只能使用最新的函数
    2. 初始化窗口函数

      • 函数原型

        HWND initgraph(
            int width,
            int height,
            int flag = NULL
        );

      • width为所要创建窗口的宽,height为所要创建窗口的高,flag为绘图窗口的样式

      • flag默认为 NULL,也可以为

        含义
        EX_DBLCLKS在绘图窗口中支持鼠标双击事件。
        EX_NOCLOSE禁用绘图窗口的关闭按钮。
        EX_NOMINIMIZE禁用绘图窗口的最小化按钮。
        EX_SHOWCONSOLE显示控制台窗口。
      • 列如

        1. 以下代码片段创建一个尺寸为 640x480 的绘图窗口:

          initgraph(640, 480);

        2. 以下代码片段创建一个尺寸为 640x480 的绘图窗口,同时显示控制台窗口:

          initgraph(640, 480, EX_SHOWCONSOLE);

        3. 以下代码片段创建一个尺寸为 640x480 的绘图窗口,同时显示控制台窗口,并禁用关闭按钮:

          initgraph(640, 480, EX_SHOWCONSOLE | EX_NOCLOSE);

    3. 设置窗口背景颜色

      • 设置颜色,宏定义

        //RGB 宏用于将红、绿、蓝颜色分量合成颜色
        COLORREF RGB(
            BYTE byRed,     // 颜色的红色部分
            BYTE byGreen,   // 颜色的绿色部分
            BYTE byBlue     // 颜色的蓝色部分
        );
        • byRed 颜色的红色部分,取值范围:0~255。

        • byGreen 颜色的绿色部分,取值范围:0~255。

        • byBlue 颜色的蓝色部分,取值范围:0~255。

      • 设置当前设备绘图背景色,函数原型

        void setbkcolor(COLORREF color);
        • color 指定要设置的背景颜色。

    4. 重绘窗口

      • 使用当前背景色清空绘图设备,函数原型

        void cleardevice();
  • 关闭

    1. 关闭创建出来的窗口,函数原型为

      void closegraph();

基本绘图

    • 绘制点,函数原型

      void putpixel(
          int x,
          int y,
          COLORREF color
      );
    • x为绘制点的横坐标,y为绘制点的纵坐标,color为绘制点的颜色

  1. 线

    • 绘制直线,函数原型

      void line(
          int x1,
          int y1,
          int x2,
          int y2
      );
    • x1为绘制直线起点的横坐标,y1为绘制直线起点的纵坐标,x2为绘制直线终点的横坐标,y2为绘制直线终点的纵坐标。

  2. 矩形

    1. 绘制无填充矩形,函数原型

      void rectangle(
          int left,
          int top,
          int right,
          int bottom
      );
      • left 为矩形左部 x 坐标,top 为矩形顶部 y 坐标,right 为矩形右部 x 坐标,bottom 为矩形底部 y 坐标

    2. 画有边框的填充矩形,函数原型

      void fillrectangle(
          int left,
          int top,
          int right,
          int bottom
      );
      • left 为矩形左部 x 坐标,top 为矩形顶部 y 坐标,right 为矩形右部 x 坐标,bottom 为矩形底部 y 坐标

    3. 画无边框的填充矩形,函数原型

      void solidrectangle(
          int left,
          int top,
          int right,
          int bottom
      );
      • left 为矩形左部 x 坐标,top 为矩形顶部 y 坐标,right 为矩形右部 x 坐标,bottom 为矩形底部 y 坐标

    1. 画无填充的圆,函数原型

      void circle(
          int x,
          int y,
          int radius
      );
      • x 为圆心横坐标,y 为圆心纵坐标,radius 为园的半径

    2. 画有边框无填充的圆,函数原型

      void fillcircle(
          int x,
          int y,
          int radius
      );
      • x 为圆心横坐标,y 为圆心纵坐标,radius 为园的半径

    3. 画无边框填充的圆,函数原型

      void solidcircle(
          int x,
          int y,
          int radius
      );
      • x 为圆心横坐标,y 为圆心纵坐标,radius 为园的半径

文字输出

  1. 设置文字类型

    1. 设置当前文字样式,函数原型

      void settextstyle(
          int nHeight,
          int nWidth,
          LPCTSTR lpszFace
      );
      • nHeight 字体的高度,nWidth 字体的宽度 0为自适应,lpszFace 为字体的样式(电脑中有的字体样式的文件名,名字里不能出现空格)

    2. 设置当前设备图案填充和文字输出时的背景模式,函数原型

      void setbkmode(int mode);
      • mode 指定图案填充和文字输出时的背景模式,可以是以下值:

        描述
        OPAQUE背景用当前背景色填充(默认)。
        TRANSPARENT背景是透明的。

  2. 设置文字颜色

    1. 设置当前文字颜色,函数原型

      void settextcolor(COLORREF color);
      • color 要设置的文字颜色。

  3. 文字输出函数

    1. 在指定位置输出字符串,函数原型

      void outtextxy(
          int x,
          int y,
          LPCTSTR str
      );
      • x 为要输出文件左上顶点的横坐标,y为要输出文件左上顶点的纵坐标,str 为要输出的字符串。

贴图

  1. 图片的加载

    1. 从文件中读取图像,函数原型

      // 从图片文件获取图像(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 的大小以适应图片
      );
  2. 图片的显示

    1. 用于在当前设备上绘制指定图像,函数原型

      //No.1
      // 绘制图像
      void putimage(
          int dstX,               // 绘制位置的 x 坐标
          int dstY,               // 绘制位置的 y 坐标
          IMAGE *pSrcImg,         // 要绘制的 IMAGE 对象指针
          DWORD dwRop = SRCCOPY   // 三元光栅操作码
      );
      //No.2
      // 绘制图像(指定宽高和起始位置)
      void putimage(
          int dstX,               // 绘制位置的 x 坐标
          int dstY,               // 绘制位置的 y 坐标
          int dstWidth,           // 绘制的宽度
          int dstHeight,          // 绘制的高度
          IMAGE *pSrcImg,         // 要绘制的 IMAGE 对象指针
          int srcX,               // 绘制内容在 IMAGE 对象中的左上角 x 坐标
          int srcY,               // 绘制内容在 IMAGE 对象中的左上角 y 坐标
          DWORD dwRop = SRCCOPY   // 三元光栅操作码
      );
    2. 三元光栅操作码(即位操作模式),支持全部的 256 种三元光栅操作码,常用的几种如下:

      含义
      DSTINVERT目标图像 = NOT 目标图像
      MERGECOPY目标图像 = 源图像 AND 当前填充颜色
      MERGEPAINT目标图像 = 目标图像 OR (NOT 源图像)
      NOTSRCCOPY目标图像 = NOT 源图像
      NOTSRCERASE目标图像 = NOT (目标图像 OR 源图像)
      PATCOPY目标图像 = 当前填充颜色
      PATINVERT目标图像 = 目标图像 XOR 当前填充颜色
      PATPAINT目标图像 = 目标图像 OR ((NOT 源图像) OR 当前填充颜色)
      SRCAND目标图像 = 目标图像 AND 源图像
      SRCCOPY目标图像 = 源图像
      SRCERASE目标图像 = (NOT 目标图像) AND 源图像
      SRCINVERT目标图像 = 目标图像 XOR 源图像
      SRCPAINT目标图像 = 目标图像 OR 源图像
      • AND / OR / NOT / XOR 为布尔运算。

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值