DEV-C++ ege.h库 绘图教程(五)

一、前情回顾

DEV-C++ ege.h库 绘图教程(一)

DEV-C++ ege.h库 绘图教程(二)

DEV-C++ ege.h库 绘图教程(三)

DEV-C++ ege.h库 绘图教程(四)

前面几期我们讲了绘图,时间,颜色等各方面的函数。

我们今天将会来一些更复杂的东西——图像。

 其实很早之前我们就已经说过图像了,但这次我们将会更详细地讲解图像。

二、图像处理函数

1.PIMAGE,PCIMAGE

一个保存图像的变量类型。

声明:
typedef       IMAGE* PIMAGE;
typedef const IMAGE* PCIMAGE;

功能:

IMAGE 为保存图像的对象, PIMAGE 为指向该对象的指针, PCIMAGE 为指向常量对象的指针。

示例:
以下语句可以创建一个名为 pimg 的 PIMAGE 对象,尺寸为100x50:
PIMAGE pimg = newimage(100, 50);
注意,不需要时要 delimage(pimg); 来释放掉,切记。

 2.newimage


功能:

这个函数创建图像,并返回图像的指针 PIMAGE。
创建后如果图像不再使用,需要使用 delimage() 销毁,防止内存泄漏。

声明:
PIMAGE newimage(); //创建大小为1x1的图像
PIMAGE newimage( //创建指定大小的图像        
int width,
int height
);

这里有一个需要注意的地方。

之前也讲过,在定义一个PIMAGE变量时,必须有初始值newimage();

PIMAGE pimg=newimage();

 否则运行时会报错。

3.delimage

销毁图像,没有什么好说的。

void           EGEAPI delimage(PCIMAGE pImg);          // 删除 PIMAGE

当不用一个图像时,必须把这个图像delimage掉!!!

当不用一个图像时,必须把这个图像delimage掉!!!

当不用一个图像时,必须把这个图像delimage掉!!!

(虽然我也不知道为什么,估计是会占用内存空间)

4.getimage

这个函数的花样就比较多了,所以我就直接上官方解释了。


功能:

这个函数的四个重载分别用于从窗口 / 文件 / 资源 / IMAGE 对象中获取图像

声明:
// 从窗口获取图像
int getimage(
        PIMAGE pDstImg, // 保存图像的 IMAGE 对象指针
        int srcX, // 要获取图像的区域左上角 x 坐标
        int srcY, // 要获取图像的区域左上角 y 坐标
        int srcWidth, // 要获取图像的区域宽度
        int srcHeight // 要获取图像的区域高度
);
// 从另一个 IMAGE 对象中获取图像
int getimage(
        PIMAGE pDstImg, // 保存图像的 IMAGE 对象指针
        PCIMAGE pSrcImg,  // 源图像 IMAGE 对象
        int srcX, // 要获取图像的区域左上角 x 坐标
        int srcY, // 要获取图像的区域左上角 y 坐标
        int srcWidth, // 要获取图像的区域宽度
        int srcHeight // 要获取图像的区域高度
);
// 从图片文件获取图像(png/bmp/jpg/gif/emf/wmf/ico)
int getimage(
        PIMAGE pDstImg, // 保存图像的 IMAGE 对象指针
        LPCTSTR pImgFile, // 图片文件名
        int zoomWidth = 0, // 设定图像缩放至的宽度(0 表示默认宽度,不缩放)
        int zoomHeight = 0 // 设定图像缩放至的高度(0 表示默认高度,不缩放)
);
// 从资源文件获取图像(png/bmp/jpg/gif/emf/wmf/ico)
int getimage(
        PIMAGE pDstImg, // 保存图像的 IMAGE 对象指针
        LPCTSTR pResType, // 资源类型
        LPCTSTR pResName, // 资源名称
        int zoomWidth = 0, // 设定图像缩放至的宽度(0 表示默认宽度,不缩放)
        int zoomHeight = 0 // 设定图像缩放至的高度(0 表示默认高度,不缩放)
); 
参数: pimg (详见各重载函数原型内的注释) 返回值:
返回值含义
grOk (值为 0)读取成功
grAllocError读取时内存分配失败
grFileNotFound文件不存在
grNullPointer指针转换失败
grIOerror读取失败

这里解释的已经很清楚了,也可以看回这一期,这里就不多赘述了。 

5.getimage_pngfile

顾名思义,从png文件中获取图像。

int  EGEAPI getimage_pngfile(PIMAGE pimg, LPCSTR  filename);
int  EGEAPI getimage_pngfile(PIMAGE pimg, LPCWSTR filename);

6.putimage

这个就更多花样了,我也不说什么了。

功能:

这个函数的几个重载用于在窗口或另一个图像上绘制指定图像。

声明:
// 绘制图像到窗口
void putimage(
    int dstX,              // 绘制位置的 x 坐标
    int dstY,              // 绘制位置的 y 坐标
    PCIMAGE pSrcImg,       // 要绘制的 IMAGE 对象指针
    DWORD dwRop = SRCCOPY  // 三元光栅操作码(详见备注)
);

// 绘制图像到(指定宽高)
void putimage(
    int dstX,              // 绘制位置的 x 坐标
    int dstY,              // 绘制位置的 y 坐标
    int dstWidth,          // 绘制的宽度
    int dstHeight,         // 绘制的高度
    PCIMAGE pSrcImg,       // 要绘制的 IMAGE 对象指针
    int srcX,              // 绘制内容在 IMAGE 对象中的左上角 x 坐标
    int srcY,              // 绘制内容在 IMAGE 对象中的左上角 y 坐标
    DWORD dwRop = SRCCOPY  // 三元光栅操作码(详见备注)
);

// 绘制图像到窗口(拉伸)
void putimage(
    int dstX,              // 绘制位置的 x 坐标
    int dstY,              // 绘制位置的 y 坐标
    int dstWidth,          // 绘制的宽度
    int dstHeight,         // 绘制的高度
    PCIMAGE pSrcImg,       // 要绘制的 IMAGE 对象指针
    int srcX,              // 绘制内容在 IMAGE 对象中的左上角 x 坐标
    int srcY,              // 绘制内容在 IMAGE 对象中的左上角 y 坐标
    int srcWidth,          // 绘制内容在源 IMAGE 对象中的宽度
    int srcHeight,         // 绘制内容在源 IMAGE 对象中的高度
    DWORD dwRop = SRCCOPY  // 三元光栅操作码(详见备注)
);

// 绘制图像到另一图像
void putimage(
    PIMAGE pDstImg,        // 目标 IMAGE 对象指针
    int dstX,              // 绘制位置的 x 坐标
    int dstY,              // 绘制位置的 y 坐标
    PCIMAGE pSrcImg,       // 源 IMAGE 对象指针
    DWORD dwRop = SRCCOPY  // 三元光栅操作码(详见备注)
);
// 绘制图像到另一图像(指定宽高)
void putimage(
    PIMAGE pDstImg,        // 目标 IMAGE 对象指针
    int dstX,              // 绘制位置的 x 坐标
    int dstY,              // 绘制位置的 y 坐标
    int dstWidth,          // 绘制的宽度
    int dstHeight,         // 绘制的高度
    PCIMAGE pSrcImg,       // 源 IMAGE 对象指针
    int srcX,              // 绘制内容在源 IMAGE 对象中的左上角 x 坐标
    int srcY,              // 绘制内容在源 IMAGE 对象中的左上角 y 坐标
    DWORD dwRop = SRCCOPY  // 三元光栅操作码(详见备注)
);
// 绘制图像到另一图像(拉伸)
void putimage(
    PIMAGE pDstImg,        // 目标 IMAGE 对象指针
    int dstX,              // 绘制位置的 x 坐标
    int dstY,              // 绘制位置的 y 坐标
    int dstWidth,          // 绘制的宽度
    int dstHeight,         // 绘制的高度
    PCIMAGE pSrcImg,       // 源 IMAGE 对象指针
    int srcX,              // 绘制内容在源 IMAGE 对象中的左上角 x 坐标
    int srcY,              // 绘制内容在源 IMAGE 对象中的左上角 y 坐标
    int srcWidth,          // 绘制内容在源 IMAGE 对象中的宽度
    int srcHeight,         // 绘制内容在源 IMAGE 对象中的高度
    DWORD dwRop = SRCCOPY  // 三元光栅操作码(详见备注)
);
参数: (详见各重载函数原型内的注释) 备注: 三元光栅操作码(即位操作模式),支持全部的 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 图像颜色
注:1. AND / OR / NOT / XOR 为布尔位运算。2. "窗口颜色"指绘制所经过的窗口像素点的颜色。3. "图像颜色"是指通过 IMAGE 对象中的图像的颜色。4. "当前填充颜色"是指通过 setfillstyle 设置的用于当前填充的颜色。5. 查看全部的三元光栅操作码请详见:三元光栅操作码。 返回值: (无) 示例: 以下局部代码读取 c:\test.jpg 绘制在窗口左上角:
PIMAGE img = newimage();
if (getimage(img, "c:\\test.jpg")!= grOk) {
    //读取图片文件失败
    exit(-1);
}
putimage(0, 0, img);
delimage(img);

以下局部代码将窗口 (0,0) 起始的长宽各 100 像素的图像拷贝至 (200,200) 位置:
PIMAGE img = newimage();
getimage(img, 0, 0, 100, 100);
putimage(200, 200, img);

delimage(img);

这里提到了三元光栅,那么这是什么呢,我们等一下再说。

 7.putimage_withalpha

功能:

绘制带透明通道的图像

声明:
int putimage_withalpha(
    PIMAGE imgdest,           // 目标 IMAGE 对象指针
    PCIMAGE imgsrc,           // 源 IMAGE 对象指针
    int nXOriginDest,         // 绘制位置的 x 坐标
    int nYOriginDest,         // 绘制位置的 y 坐标
    int nXOriginSrc = 0,      // 绘制内容在 IMAGE 对象中的左上角 x 坐标
    int nYOriginSrc = 0,      // 绘制内容在 IMAGE 对象中的左上角 y 坐标
    int nWidthSrc = 0,        // 绘制内容在源 IMAGE 对象中的宽度
    int nHeightSrc = 0        // 绘制内容在源 IMAGE 对象中的高度
);


int putimage_withalpha(
    PIMAGE imgdest,           // 目标 IMAGE 对象指针
    PCIMAGE imgsrc,           // 源 IMAGE 对象指针
    int nXOriginDest,         // 绘制位置的 x 坐标
    int nYOriginDest,         // 绘制位置的 y 坐标
    int nWidthDest,           // 绘制内容在目标 IMAGE 对象中的宽度
    int nHeightDest,          // 绘制内容在目标 IMAGE 对象中的高度
    int nXOriginSrc,          // 绘制内容在 IMAGE 对象中的左上角 x 坐标
    int nYOriginSrc,          // 绘制内容在 IMAGE 对象中的左上角 y 坐标
    int nWidthSrc,            // 绘制内容在源 IMAGE 对象中的宽度
    int nHeightSrc            // 绘制内容在源 IMAGE 对象中的高度
);

参数:

imgdest 要进行半透明混合的目标图片,如果为NULL则表示操作窗口上的图片 imgsrc 要进行半透明混合的源图片,该操作不会改变源图片

nXOriginDest, nYOriginDest 要开始进行混合的目标图片坐标,该坐标是混合区域的左上角 nWidthDest, nHeightDest 要开始进行混合的目标矩形区域大小 alpha 透明度值,如果为0x0,表示源图片完全透明,如果为0xFF,表示源图片完全不透明。

nXOriginDest, nYOriginDest, nWidthDest, nHeightDest 描述要进行此操作的源图矩形区域。如果nWidthDest和nHeightDest 为0,表示操作整张图片。

返回值: 成功返回0,否则返回非0,若imgdest或imgsrc传入错误,会引发运行时异常。

8.putimage_alphablend

功能:

对两张图片进行半透明混合,并把混合结果写入目标图片。

声明:
int putimage_alphablend(
    PIMAGE imgdest,           // 目标 IMAGE 对象指针
    PCIMAGE imgsrc,           // 源 IMAGE 对象指针
    int nXOriginDest,         // 绘制位置的 x 坐标
    int nYOriginDest,         // 绘制位置的 y 坐标
    unsigned char alpha,      // 透明度值
    int nXOriginSrc = 0,      // 绘制内容在 IMAGE 对象中的左上角 x 坐标
    int nYOriginSrc = 0,      // 绘制内容在 IMAGE 对象中的左上角 y 坐标
    int nWidthSrc = 0,        // 绘制内容在源 IMAGE 对象中的宽度
    int nHeightSrc = 0        // 绘制内容在源 IMAGE 对象中的高度
);

参数:

imgdest 要进行半透明混合的目标图片,如果为 NULL 则表示操作窗口上的图片

imgsrc 要进行半透明混合的源图片,该操作不会改变源图片

nXOriginDest, nYOriginDest 要开始进行混合的目标图片坐标,该坐标是混合区域的左上角

alpha 透明度值,如果为 0x0,表示源图片完全透明,如果为 0xFF,表示源图片完全不透明。

nXOriginDest, nYOriginDest, nWidthDest, nHeightDest 描述要进行此操作的源图矩形区域。如果 nWidthDest 和 nHeightDest 为 0,表示操作整张图片。

返回值: 成功返回 0,否则返回非 0,若 imgdest 或 imgsrc 传入错误,会引发运行时异常。 

9.putimage_alphafilter

我只能说,接下来的操作就越来越奇怪了,一般人大概率用不到。

所以就当看看就好。

功能:

根据一张图像提供的 Alpha,将源图像和目标图像进行混合,并把混合结果写入目标图像。

声明:
int putimage_alphafilter(
    PIMAGE imgdest,           // 目标 IMAGE 对象指针
    PCIMAGE imgsrc,           // 源 IMAGE 对象指针
    int nXOriginDest,         // 绘制位置的 x 坐标
    int nYOriginDest,         // 绘制位置的 y 坐标
    PCIMAGE imgalpha,         // 提供透明度(alpha)值的图像
    int nXOriginSrc,          // 绘制内容在 IMAGE 对象中的左上角 x 坐标
    int nYOriginSrc,          // 绘制内容在 IMAGE 对象中的左上角 y 坐标
    int nWidthSrc,            // 绘制内容在源 IMAGE 对象中的宽度
    int nHeightSrc            // 绘制内容在源 IMAGE 对象中的高度
);

参数:

imgdest 要进行半透明混合的目标图片,如果为 NULL 则表示操作窗口上的图片

imgsrc 要进行半透明混合的源图片,该操作不会改变源图片

nXOriginDest, nYOriginDest 要开始进行混合的目标图片坐标,该坐标是混合区域的左上角

imgalpha 提供透明度(alpha)值的图像。图像中像素值不再作为颜色,而是取低 8 位(取值范围:0 到 255)做为 alpha 值。

nXOriginDest, nYOriginDest, nWidthDest, nHeightDest 描述要进行此操作的源图矩形区域。如果 nWidthDest 和 nHeightDest 为 0,表示操作整张图片。

返回值: 成功返回 0,否则返回非 0,若 imgdest 或 imgsrc 传入错误,会引发运行时异常。 

10.putimage_transparent

功能:

对两张图片进行透明混合,并把混合结果写入目标图片。

声明:
int putimage_transparent(
    PIMAGE imgdest,           // 目标 IMAGE 对象指针
    PCIMAGE imgsrc,           // 源 IMAGE 对象指针
    int nXOriginDest,         // 绘制位置的 x 坐标
    int nYOriginDest,         // 绘制位置的 y 坐标
    color_t crTransparent,    // 变为透明的像素颜色
    int nXOriginSrc = 0,      // 绘制内容在 IMAGE 对象中的左上角 x 坐标
    int nYOriginSrc = 0,      // 绘制内容在 IMAGE 对象中的左上角 y 坐标
    int nWidthSrc = 0,        // 绘制内容在源 IMAGE 对象中的宽度
    int nHeightSrc = 0        // 绘制内容在源 IMAGE 对象中的高度
);

参数:

imgdest 要进行透明混合的目标图片,如果为NULL则表示操作窗口上的图片

imgsrc 要进行透明混合的源图片,该操作不会改变源图片

nXOriginDest, nYOriginDest 要开始进行混合的目标图片坐标,该坐标是混合区域的左上角

crTransparent 关键色。源图片上为该颜色值的像素,将忽略,不会改写目标图片上相应位置的像素。

nXOriginDest, nYOriginDest, nWidthDest, nHeightDest 描述要进行此操作的源图矩形区域。如果nWidthDest和nHeightDest 为0,表示操作整张图片。

返回值: 成功返回0,否则返回非0,若imgdest或imgsrc传入错误,会引发运行时异常。 

11.putimage_alphatransparent

功能:

对两张图片进行透明/半透明混合,并把混合结果写入目标图片。

声明:
int putimage_alphatransparent(
    PIMAGE imgdest,           // 目标 IMAGE 对象指针
    PCIMAGE imgsrc,           // 源 IMAGE 对象指针
    int nXOriginDest,         // 绘制位置的 x 坐标
    int nYOriginDest,         // 绘制位置的 y 坐标
    color_t crTransparent,    // 变为透明的像素颜色
    unsigned char alpha,      // 透明度值
    int nXOriginSrc = 0,      // 绘制内容在 IMAGE 对象中的左上角 x 坐标
    int nYOriginSrc = 0,      // 绘制内容在 IMAGE 对象中的左上角 y 坐标
    int nWidthSrc = 0,        // 绘制内容在源 IMAGE 对象中的宽度
    int nHeightSrc = 0        // 绘制内容在源 IMAGE 对象中的高度
);

参数:

imgdest 要进行半透明混合的目标图片,如果为NULL则表示操作窗口上的图片

imgsrc 要进行半透明混合的源图片,该操作不会改变源图片

nXOriginDest, nYOriginDest 要开始进行混合的目标图片坐标,该坐标是混合区域的左上角

crTransparent 关键色。源图片上为该颜色值的像素,将忽略,不会改写目标图片上相应位置的像素。

alpha 透明度值,如果为0x0,表示源图片完全透明,如果为0xFF,表示源图片完全不透明。

nXOriginDest, nYOriginDest, nWidthDest, nHeightDest 描述要进行此操作的源图矩形区域。如果nWidthDest和nHeightDest 为0,表示操作整张图片。

返回值: 成功返回0,否则返回非0,若imgdest或imgsrc传入错误,会引发运行时异常。 

12.putimage_rotate

这个函数就比较常用了,只是有点复杂。

功能:

绘制旋转后的图像

声明:
 int putimage_rotate(
    PIMAGE imgdest,               // 目标 IMAGE 对象指针
    PCIMAGE PIMAGE imgtexture,    // 纹理IMAGE 对象指针
    int nXOriginDest,             // 绘制位置的 x 坐标
    int nYOriginDest,             // 绘制位置的 y 坐标
    float centerx,                // 旋转中心在源图像纹理坐标系上的x坐标
    float centery,                // 旋转中心在源图像纹理坐标系上的y坐标
    float  radian,                // 旋转弧度
    int btransparent = 0,         // 是否允许图像透明通道
    int alpha = -1,               // 透明度
    int smooth = 0                // 是否进行平滑处理
);

参数:

imgdest 绘制的目标图像,如果为NULL则绘制到窗口

imgtexture 要绘制的源图像,该操作不会改变源图像

nXOriginDest, nYOriginDest 旋转中心在目标图像上的位置

centerx, certery 旋转中心在源图像纹理坐标系上的位置

radian 旋转的弧度

btransparent 是否允许图像透明通道, 设置为1可以绘制带透明通道的纹理图像,设置为0时忽略图像的透明通道。

alpha 设置图像透明度值,如果为0x0,表示源图片完全透明,如果为0xFF,表示源图片完全不透明,-1表示不进行透明处理。

smooth 是否对图像进行平滑处理。旋转后绘制出的图像可能带有锯齿,失真。

返回值: 成功返回0,否则返回非0,若imgdest或imgsrc传入错误,会引发运行时异常。 

13. putimage_rotatetransparent

功能:

将一个图像(源图像)缩放旋转后复制到目标图像上。

声明:
int putimage_rotatetransparent(
    PIMAGE imgdest,           // 目的图像指针, NULL表示窗口
    PCIMAGE imgsrc,            // 源图像指针
    int xCenterDest,         // 旋转中心在目的图像的x坐标 
    int yCenterDest,         // 旋转中心在目的图像的y坐标
    int xCenterSrc,         // 源图像旋转中心的x坐标 
    int yCenterSrc,         // 源图像旋转中心的y坐标
    color_t crTransparent,    // 源图像透明背景色
    float radian,      // 顺时针旋转角度(弧度) 
    float zoom=1.0      // 缩放因子
    int nWidthSrc = 0,        // 绘制内容在源 IMAGE 对象中的宽度
    int nHeightSrc = 0        // 绘制内容在源 IMAGE 对象中的高度
);


int putimage_rotatetransparent(
    PIMAGE imgdest,           // 目的图像指针, NULL表示窗口
    PCIMAGE imgsrc,            // 源图像指针
    int xCenterDest,         // 旋转中心在目的图像的x坐标 
    int yCenterDest,         // 旋转中心在目的图像的y坐标
    int xOriginSrc,         // 源图像复制区域左上角x坐标 
    int yOriginSrc,         // 源图像复制区域左上角y坐标
    int widthSrc,         // 源图像复制区域宽度 
    int heightSrc,         // 源图像复制区域高度
    int xCenterSrc,         // 源图像旋转中心的x坐标 
    int yCenterSrc,         // 源图像旋转中心的y坐标
    color_t crTransparent,    // 源图像透明背景色
    float radian,      // 顺时针旋转角度(弧度) 
    float zoom=1.0      // 缩放因子
    int nWidthSrc = 0,        // 绘制内容在源 IMAGE 对象中的宽度
    int nHeightSrc = 0        // 绘制内容在源 IMAGE 对象中的高度
);

参数:

imgdest 要被复制到的目标图像,如果为NULL则表示操作窗口上的图像

imgsrc 被赋值的源图像,该操作不会改变源图像内容。

xCenterDest, yCenterDest 复制后旋转中心在目标图像上的位置

xCenterSrc, yCenterSrc 旋转中心在源图像上的位置

crTransparent 透明背景色。源图像上为该颜色值的像素,将忽略,不会改写目标图像上相应位置的像素。

xOriginSrc, yOriginSrc, widthSrc, heightSrc 描述要进行此操作的源图像矩形区域。

radian 源图像复制时的旋转角度。单位为弧度。当此值为正时,按顺时针方向旋转。

zoom 源图像复制时的放大倍数。

返回值: 成功返回0,否则返回非0,若imgdest或imgsrc传入错误,会引发运行时异常。

14.resize

接下来就回归正常了。

功能:

调整图像的尺寸,调整后,图像用背景色填充,视口还原为初始状态。

声明:
int resize( PIMAGE  pimg, int width, int height ); 

参数: pimg 要调整大小的图像,不能为NULL。 width, height 图像新尺寸

返回值: 成功返回0,否则返回非0,若 pimg 传入错误,会引发运行时异常。 

15.resize_f

功能:

调整图像的尺寸,调整后,图像内容未定义,视口还原为初始状态。

声明:
int resize( PIMAGE  pimg, int width, int height ); 

参数: pimg 要调整大小的图像,不能为 NULL。 width, height 图像新尺寸

返回值: 成功返回 0,否则返回非 0,若 pimg 传入错误,会引发运行时异常。 

16.getwidth,getheight

 这两个函数既可以获取窗口宽度(高度),也可以获取图像宽度(高度)。

int EGEAPI getwidth(PCIMAGE pimg = NULL);          // 获取图片宽度
int EGEAPI getheight(PCIMAGE pimg = NULL);         // 获取图片高度

当pimg为默认值NULL时,返回窗口宽度(高度)。

17.getbuffer

功能:

获取图像的缓存区。

声明:
color_t* getbuffer( PIMAGE pimg );
color_t* getbuffer( PCIMAGE pimg ); 

参数: pimg 要获取缓存区的图像,默认值为 NULL (窗口)。

返回值: 图像缓存区首地址,缓存区为一维数组,大小为 图像宽度*图像高度。 在图像中坐标为(x, y) 的像素,为buff[y * width + x];

18.saveimage


功能:

将图像保存到文件中。目前只能保存成BMP或者PNG格式。

声明:
int saveimage( PCIMAGE  pimg, LPCSTR  filename );
int saveimage( PCIMAGE  pimg, LPCWSTR  filename ); 

参数:

pimg 要保存的图像

filename 保存的图像文件名 如果文件名以.bmp 结尾,则保存成 BMP 格式。 如果文件名以.png 结尾,则保存成 PNG 格式。 无后缀名或者其他后缀名,则保存成 PNG 格式。

返回值: 成功返回 grOk(0),否则返回非 0 值,若 pimg 传入错误,会引发运行时异常。 

 19.savepng


功能:

将图像保存到文件中。

声明:
int savepng( PCIMAGE  pimg, LPCSTR  filename, int  bAlpha = 0 );
int savepng( PCIMAGE  pimg, LPCWSTR  filename, int  bAlpha = 0 ); 

参数:

pimg 要保存的图像

filename 保存的图像文件名

bAlpha 设置保存图像的透明度,范围从0 到 255

返回值: 成功返回0,否则返回非0,若pimg传入错误,会引发运行时异常。

(不如saveimage,但方便一点)

20.imagefilter_blurring

功能:

对一图片区域进行模糊滤镜操作
声明:
int imagefilter_blurring (
    PIMAGE imgdest,
    int intensity,
    int alpha,
    int nXOriginDest = 0,
    int nYOriginDest = 0,
    int nWidthDest = 0,
    int nHeightDest = 0
);

参数:

imgdest 要进行模糊操作的图片,如果为NULL则表示操作窗口上的图片

intensity 模糊度,值越大越模糊。当值在 0x0 - 0x7F之间时,为四向模糊;当值在 0x80 - 0xFF之间时,为八向模糊,运算量会大一倍 alpha 图像亮度。取值为0x100表示亮度不变,取值为0x0表示图像变成纯黑

nXOriginDest, nYOriginDest, nWidthDest, nHeightDest 描述要进行此操作的矩形区域。如果nWidthDest和nHeightDest 为0,表示操作整张图片。

返回值: 成功返回0,否则返回非0,若imgdest传入错误,会引发运行时异常。

三、三元光栅操作码

最后,我们再来讲讲三元光栅。 

三元指D(目标图像)、P(当前填充颜色)、S(源图像)这三个元素(就像三元一次方程的三元指有三个变量元素)
光栅指掩码图(也称为遮罩图),物理上光栅有选择透光的功能。
三元光栅投影透明图片的原理可以从现实层面来理解,就是源图像的光透过掩码图构成的光栅选择性投射到目标图像(画板,背景)上。更形象的一种说法是,源图像的光透过镂空的掩码图只在目标图像上显现出掩码图镂空出来的部分(但这个比喻其实已经与光栅不太符合了,只能叫挡板)
(原文链接:https://blog.csdn.net/q781634081/article/details/108109556)

三元光栅操作码定义了源图像与屏幕图像的位合并形式,这个合并形式是以下三个操作数对应像素的布尔运算:
操作数含义
D屏幕图像
P当前填充颜色
S源图像
布尔运算符包括以下几种:
操作含义
a位的 AND 运算(双目运算)
n位的 NOT 运算(单目运算)
o位的 OR 运算(双目运算)
x位的 XOR 运算(双目运算)
所有的布尔操作都采用逆波兰表示法,例如,“当前填充颜色 or 源图像”可表示为:PSo。(当然 SPo 也是等价的,这里只列举出了其中一种等价格式) 三元光栅操作码是 32位int 类型,其高位字是布尔操作索引,低位字是操作码。布尔操作索引的 16 个位中,高 8 位用 0 填充,低 8 位是当前填充颜色、源图像和屏幕的布尔操作结果。例如,PSo 和 DPSoo 的操作索引如下:
PSDPSoDPSoo
00000
00101
01011
01111
10011
10111
11011
11111
操作索引:00FCh00FEh
上例中,PSo 的操作索引是 00FC (从下往上读),DPSoo 的是 00FE。这些值定义了相应的三元光栅操作码在“三元光栅操作码”表格中的位置,PSo 在 252 (00FCh) 行,DPSoo 在 254 (00FEh) 行。常用的三元光栅操作码已经定义了常量名,程序中可以直接使用。 三元光栅操作码
布尔功能 (16 进制)光栅操作 (16 进制)布尔功能的逆波兰表示法常量名
00000000420BLACKNESS
0100010289DPSoon
0200020C89DPSona
03000300AAPSon
0400040C88SDPona
05000500A9DPon
0600060865PDSxnon
07000702C5PDSaon
0800080F08SDPnaa
0900090245PDSxon
0A000A0329DPna
0B000B0B2APSDnaon
0C000C0324SPna
0D000D0B25PDSnaon
0E000E08A5PDSonon
0F000F0001Pn
1000100C85PDSona
11001100A6DSonNOTSRCERASE
1200120868SDPxnon
13001302C8SDPaon
1400140869DPSxnon
15001502C9DPSaon
1600165CCAPSDPSanaxx
1700171D54SSPxDSxaxn
1800180D59SPxPDxa
1900191CC8SDPSanaxn
1A001A06C5PDSPaox
1B001B0768SDPSxaxn
1C001C06CAPSDPaox
1D001D0766DSPDxaxn
1E001E01A5PDSox
1F001F0385PDSoan
2000200F09DPSnaa
2100210248SDPxon
2200220326DSna
2300230B24SPDnaon
2400240D55SPxDSxa
2500251CC5PDSPanaxn
26002606C8SDPSaox
2700271868SDPSxnox
2800280369DPSxa
29002916CAPSDPSaoxxn
2A002A0CC9DPSana
2B002B1D58SSPxPDxaxn
2C002C0784SPDSoax
2D002D060APSDnox
2E002E064APSDPxox
2F002F0E2APSDnoan
300030032APSna
3100310B28SDPnaon
3200320688SDPSoox
3300330008SnNOTSRCCOPY
34003406C4SPDSaox
3500351864SPDSxnox
36003601A8SDPox
3700370388SDPoan
380038078APSDPoax
3900390604SPDnox
3A003A0644SPDSxox
3B003B0E24SPDnoan
3C003C004APSx
3D003D18A4SPDSonox
3E003E1B24SPDSnaox
3F003F00EAPSan
4000400F0APSDnaa
4100410249DPSxon
4200420D5DSDxPDxa
4300431CC4SPDSanaxn
4400440328SDnaSRCERASE
4500450B29DPSnaon
46004606C6DSPDaox
470047076APSDPxaxn
4800480368SDPxa
49004916C5PDSPDaoxxn
4A004A0789DPSDoax
4B004B0605PDSnox
4C004C0CC8SDPana
4D004D1954SSPxDSxoxn
4E004E0645PDSPxox
4F004F0E25PDSnoan
5000500325PDna
5100510B26DSPnaon
52005206C9DPSDaox
5300530764SPDSxaxn
54005408A9DPSonon
5500550009DnDSTINVERT
56005601A9DPSox
5700570389DPSoan
5800580785PDSPoax
5900590609DPSnox
5A005A0049DPxPATINVERT
5B005B18A9DPSDonox
5C005C0649DPSDxox
5D005D0E29DPSnoan
5E005E1B29DPSDnaox
5F005F00E9DPan
6000600365PDSxa
61006116C6DSPDSaoxxn
6200620786DSPDoax
6300630608SDPnox
6400640788SDPSoax
6500650606DSPnox
6600660046DSxSRCINVERT
67006718A8SDPSonox
68006858A6DSPDSonoxxn
6900690145PDSxxn
6A006A01E9DPSax
6B006B178APSDPSoaxxn
6C006C01E8SDPax
6D006D1785PDSPDoaxxn
6E006E1E28SDPSnoax
6F006F0C65PDSxnan
7000700CC5PDSana
7100711D5CSSDxPDxaxn
7200720648SDPSxox
7300730E28SDPnoan
7400740646DSPDxox
7500750E26DSPnoan
7600761B28SDPSnaox
77007700E6DSan
78007801E5PDSax
7900791786DSPDSoaxxn
7A007A1E29DPSDnoax
7B007B0C68SDPxnan
7C007C1E24SPDSnoax
7D007D0C69DPSxnan
7E007E0955SPxDSxo
7F007F03C9DPSaan
80008003E9DPSaa
8100810975SPxDSxon
8200820C49DPSxna
8300831E04SPDSnoaxn
8400840C48SDPxna
8500851E05PDSPnoaxn
86008617A6DSPDSoaxx
87008701C5PDSaxn
88008800C6DSaSRCAND
8900891B08SDPSnaoxn
8A008A0E06DSPnoa
8B008B0666DSPDxoxn
8C008C0E08SDPnoa
8D008D0668SDPSxoxn
8E008E1D7CSSDxPDxax
8F008F0CE5PDSanan
9000900C45PDSxna
9100911E08SDPSnoaxn
92009217A9DPSDPoaxx
93009301C4SPDaxn
94009417AAPSDPSoaxx
95009501C9DPSaxn
9600960169DPSxx
970097588APSDPSonoxx
9800981888SDPSonoxn
9900990066DSxn
9A009A0709DPSnax
9B009B07A8SDPSoaxn
9C009C0704SPDnax
9D009D07A6DSPDoaxn
9E009E16E6DSPDSaoxx
9F009F0345PDSxan
A000A000C9DPa
A100A11B05PDSPnaoxn
A200A20E09DPSnoa
A300A30669DPSDxoxn
A400A41885PDSPonoxn
A500A50065PDxn
A600A60706DSPnax
A700A707A5PDSPoaxn
A800A803A9DPSoa
A900A90189DPSoxn
AA00AA0029D
AB00AB0889DPSono
AC00AC0744SPDSxax
AD00AD06E9DPSDaoxn
AE00AE0B06DSPnao
AF00AF0229DPno
B000B00E05PDSnoa
B100B10665PDSPxoxn
B200B21974SSPxDSxox
B300B30CE8SDPanan
B400B4070APSDnax
B500B507A9DPSDoaxn
B600B616E9DPSDPaoxx
B700B70348SDPxan
B800B8074APSDPxax
B900B906E6DSPDaoxn
BA00BA0B09DPSnao
BB00BB0226DSnoMERGEPAINT
BC00BC1CE4SPDSanax
BD00BD0D7DSDxPDxan
BE00BE0269DPSxo
BF00BF08C9DPSano
C000C000CAPSaMERGECOPY
C100C11B04SPDSnaoxn
C200C21884SPDSonoxn
C300C3006APSxn
C400C40E04SPDnoa
C500C50664SPDSxoxn
C600C60708SDPnax
C700C707AAPSDPoaxn
C800C803A8SDPoa
C900C90184SPDoxn
CA00CA0749DPSDxax
CB00CB06E4SPDSaoxn
CC00CC0020SSRCCOPY
CD00CD0888SDPono
CE00CE0B08SDPnao
CF00CF0224SPno
D000D00E0APSDnoa
D100D1066APSDPxoxn
D200D20705PDSnax
D300D307A4SPDSoaxn
D400D41D78SSPxPDxax
D500D50CE9DPSanan
D600D616EAPSDPSaoxx
D700D70349DPSxan
D800D80745PDSPxax
D900D906E8SDPSaoxn
DA00DA1CE9DPSDanax
DB00DB0D75SPxDSxan
DC00DC0B04SPDnao
DD00DD0228SDno
DE00DE0268SDPxo
DF00DF08C8SDPano
E000E003A5PDSoa
E100E10185PDSoxn
E200E20746DSPDxax
E300E306EAPSDPaoxn
E400E40748SDPSxax
E500E506E5PDSPaoxn
E600E61CE8SDPSanax
E700E70D79SPxPDxan
E800E81D74SSPxDSxax
E900E95CE6DSPDSanaxxn
EA00EA02E9DPSao
EB00EB0849DPSxno
EC00EC02E8SDPao
ED00ED0848SDPxno
EE00EE0086DSoSRCPAINT
EF00EF0A08SDPnoo
F000F00021PPATCOPY
F100F10885PDSono
F200F20B05PDSnao
F300F3022APSno
F400F40B0APSDnao
F500F50225PDno
F600F60265PDSxo
F700F708C5PDSano
F800F802E5PDSao
F900F90845PDSxno
FA00FA0089DPo
FB00FB0A09DPSnooPATPAINT
FC00FC008APSo
FD00FD0A0APSDnoo
FE00FE02A9DPSoo
FF00FF00621WHITENESS

四、附录

函数声明: 

//图片函数
#define getmaxx getwidth
#define getmaxy getheight

int EGEAPI getwidth(PCIMAGE pimg = NULL);          // 获取图片宽度
int EGEAPI getheight(PCIMAGE pimg = NULL);         // 获取图片高度
int EGEAPI getx(PCIMAGE pimg = NULL);              // 获取当前 x 坐标
int EGEAPI gety(PCIMAGE pimg = NULL);              // 获取当前 y 坐标

PIMAGE         EGEAPI newimage();                      // 创建 PIMAGE
PIMAGE         EGEAPI newimage(int width, int height); // 创建 PIMAGE
void           EGEAPI delimage(PCIMAGE pImg);          // 删除 PIMAGE
color_t*       EGEAPI getbuffer(PIMAGE pImg);
const color_t* EGEAPI getbuffer(PCIMAGE pImg);

int  EGEAPI resize_f(PIMAGE pDstImg, int width, int height);  //重设尺寸,但不填充背景色
int  EGEAPI resize(PIMAGE pDstImg, int width, int height); //重设尺寸,并填充背景色
int EGEAPI getimage(PIMAGE pDstImg, int srcX, int srcY, int srcWidth, int srcHeight);                             // 从屏幕获取图像
int EGEAPI getimage(PIMAGE pDstImg, PCIMAGE pSrcImg, int srcX, int srcY, int srcWidth, int srcHeight);            // 从另一个 PIMAGE 对象中获取图像
int  EGEAPI getimage(PIMAGE pDstImg, LPCSTR  pImgFile, int zoomWidth = 0, int zoomHeight = 0);                     // 从图片文件获取图像(bmp/jpg/gif/emf/wmf)
int  EGEAPI getimage(PIMAGE pDstImg, LPCWSTR pImgFile, int zoomWidth = 0, int zoomHeight = 0);                     // 从图片文件获取图像(bmp/jpg/gif/emf/wmf)
int  EGEAPI getimage(PIMAGE pDstImg, LPCSTR  pResType, LPCSTR  pResName, int zoomWidth = 0, int zoomHeight = 0);   // 从资源文件获取图像(bmp/jpg/gif/emf/wmf)
int  EGEAPI getimage(PIMAGE pDstImg, LPCWSTR pResType, LPCWSTR pResName, int zoomWidth = 0, int zoomHeight = 0);   // 从资源文件获取图像(bmp/jpg/gif/emf/wmf)
void EGEAPI putimage(int dstX, int dstY, PCIMAGE pSrcImg, DWORD dwRop = SRCCOPY);                                  // 绘制图像到屏幕
void EGEAPI putimage(int dstX, int dstY, int dstWidth, int dstHeight, PCIMAGE pSrcImg, int srcX, int srcY, DWORD dwRop = SRCCOPY);                                // 绘制图像到屏幕(指定宽高)
void EGEAPI putimage(int dstX, int dstY, int dstWidth, int dstHeight, PCIMAGE pSrcImg, int srcX, int srcY, int srcWidth, int srcHeight, DWORD dwRop = SRCCOPY);   // 绘制图像到屏幕(指定源宽高和目标宽高进行拉伸)
void EGEAPI putimage(PIMAGE pDstImg, int dstX, int dstY, PCIMAGE pSrcImg, DWORD dwRop = SRCCOPY);                                                                 // 绘制图像到另一图像中
void EGEAPI putimage(PIMAGE pDstImg, int dstX, int dstY, int dstWidth, int dstHeight, PCIMAGE pSrcImg, int srcX, int srcY, DWORD dwRop = SRCCOPY);                // 绘制图像到另一图像中(指定宽高)
void EGEAPI putimage(PIMAGE pDstImg, int dstX, int dstY, int dstWidth, int dstHeight, PCIMAGE pSrcImg, int srcX, int srcY, int srcWidth, int srcHeight, DWORD dwRop = SRCCOPY);   // 绘制图像到另一图像中(指定源宽高和目标宽高进行拉伸)
int  EGEAPI saveimage(PCIMAGE pimg, LPCSTR  filename);
int  EGEAPI saveimage(PCIMAGE pimg, LPCWSTR filename);
int  EGEAPI savepng(PCIMAGE pimg, LPCSTR  filename, int bAlpha = 0);
int  EGEAPI savepng(PCIMAGE pimg, LPCWSTR filename, int bAlpha = 0);
int  EGEAPI getimage_pngfile(PIMAGE pimg, LPCSTR  filename);
int  EGEAPI getimage_pngfile(PIMAGE pimg, LPCWSTR filename);

int EGEAPI putimage_transparent(
	PIMAGE imgdest,         // handle to dest
	PCIMAGE imgsrc,         // handle to source
	int nXOriginDest,       // x-coord of destination upper-left corner
	int nYOriginDest,       // y-coord of destination upper-left corner
	color_t crTransparent,  // color to make transparent
	int nXOriginSrc = 0,    // x-coord of source upper-left corner
	int nYOriginSrc = 0,    // y-coord of source upper-left corner
	int nWidthSrc = 0,      // width of source rectangle
	int nHeightSrc = 0      // height of source rectangle
);
int EGEAPI putimage_alphablend(
	PIMAGE imgdest,         // handle to dest
	PCIMAGE imgsrc,         // handle to source
	int nXOriginDest,       // x-coord of destination upper-left corner
	int nYOriginDest,       // y-coord of destination upper-left corner
	unsigned char alpha,    // alpha
	int nXOriginSrc = 0,    // x-coord of source upper-left corner
	int nYOriginSrc = 0,    // y-coord of source upper-left corner
	int nWidthSrc = 0,      // width of source rectangle
	int nHeightSrc = 0      // height of source rectangle
);
int EGEAPI putimage_alphatransparent(
	PIMAGE imgdest,         // handle to dest
	PCIMAGE imgsrc,         // handle to source
	int nXOriginDest,       // x-coord of destination upper-left corner
	int nYOriginDest,       // y-coord of destination upper-left corner
	color_t crTransparent,  // color to make transparent
	unsigned char alpha,    // alpha
	int nXOriginSrc = 0,    // x-coord of source upper-left corner
	int nYOriginSrc = 0,    // y-coord of source upper-left corner
	int nWidthSrc = 0,      // width of source rectangle
	int nHeightSrc = 0      // height of source rectangle
);
int EGEAPI putimage_withalpha(
	PIMAGE imgdest,         // handle to dest
	PCIMAGE imgsrc,         // handle to source
	int nXOriginDest,       // x-coord of destination upper-left corner
	int nYOriginDest,       // y-coord of destination upper-left corner
	int nXOriginSrc = 0,    // x-coord of source upper-left corner
	int nYOriginSrc = 0,    // y-coord of source upper-left corner
	int nWidthSrc = 0,      // width of source rectangle
	int nHeightSrc = 0      // height of source rectangle
);
int EGEAPI putimage_withalpha(
	PIMAGE imgdest,         // handle to dest
	PCIMAGE imgsrc,         // handle to source
	int nXOriginDest,       // x-coord of destination upper-left corner
	int nYOriginDest,       // y-coord of destination upper-left corner
	int nWidthDest,         // width of destination rectangle
	int nHeightDest,        // height of destination rectangle	
	int nXOriginSrc,        // x-coord of source upper-left corner
	int nYOriginSrc,        // y-coord of source upper-left corner
	int nWidthSrc,          // width of source rectangle
	int nHeightSrc          // height of source rectangle
);
int EGEAPI putimage_alphafilter(
	PIMAGE imgdest,         // handle to dest
	PCIMAGE imgsrc,         // handle to source
	int nXOriginDest,       // x-coord of destination upper-left corner
	int nYOriginDest,       // y-coord of destination upper-left corner
	PCIMAGE imgalpha,       // alpha
	int nXOriginSrc,        // x-coord of source upper-left corner
	int nYOriginSrc,        // y-coord of source upper-left corner
	int nWidthSrc,          // width of source rectangle
	int nHeightSrc          // height of source rectangle
);
int EGEAPI imagefilter_blurring (
	PIMAGE imgdest,         // handle to dest
	int intensity,
	int alpha,
	int nXOriginDest = 0,
	int nYOriginDest = 0,
	int nWidthDest = 0,
	int nHeightDest = 0
);
int EGEAPI putimage_rotate(
	PIMAGE imgdest,
	PCIMAGE imgtexture,
	int nXOriginDest,
	int nYOriginDest,
	float centerx,
	float centery,
	float radian,
	int btransparent = 0,            // transparent (1) or not (0)
	int alpha = -1,                  // in range[0, 256], alpha== -1 means no alpha
	int smooth = 0
);

int EGEAPI putimage_rotatezoom(
	PIMAGE imgdest,
	PCIMAGE imgtexture,
	int nXOriginDest,
	int nYOriginDest,
	float centerx,
	float centery,
	float radian,
	float zoom,
	int btransparent = 0,            // transparent (1) or not (0)
	int alpha = -1,                  // in range[0, 256], alpha== -1 means no alpha
	int smooth = 0
);

int EGEAPI putimage_rotatetransparent(
	PIMAGE imgdest,/* handle to dest, NULL means the SCREEN  */
	PCIMAGE imgsrc,/* handle to source */
	int xCenterDest,/* x-coord of rotation center in dest */
	int yCenterDest,/* y-coord of rotation center in dest */
	int xCenterSrc, /* x-coord of rotation center in source */
	int yCenterSrc,/* y-coord of rotation center in source */
	color_t crTransparent, /* color to make transparent */
	float radian, /* rotation angle (clockwise, in radian) */
	float zoom=1.0 /* zoom factor */
); 

int EGEAPI putimage_rotatetransparent(
	PIMAGE imgdest,/* handle to dest, NULL means the SCREEN */
	PCIMAGE imgsrc,/* handle to source */
	int xCenterDest,/* x-coord of rotation center in dest */
	int yCenterDest,/* y-coord of rotation center in dest */
	int xOriginSrc, /* x-coord of source upper-left corner */
	int yOriginSrc, /* y-coord of source upper-left corner */
	int widthSrc, /* width of source rectangle */
	int heightSrc, /* height of source rectangle */
	int xCenterSrc, /* x-coord of rotation center in source */
	int yCenterSrc,/* y-coord of rotation center in source */
	color_t crTransparent, /* color to make transparent */
	float radian, /* rotation angle (clockwise, in radian) */
	float zoom=1.0 /* zoom factor */
); 

五、总结

今天,我们学习了有关图像操作的函数,那么我们下次继续!

上期: DEV-C++ ege.h库 绘图教程(四)
下期: DEV-C++ ege.h库 绘图教程(六)​​​​​​​
  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
函数手册:FunLib.docx 创建三维动画工程教程:lesson1.docx ASCII码格式的STL模型:STLASCII.rar 主要特点和功能: 1.标准NOI竞赛环境,编译器为GCC4.8.4 2.基于opengl三维动画引擎,实现三维图形、动画的绘制 3.支持语音交互功能,实现可以语音对话的弱人工智能 4.封装了常用的游戏功能,轻松地开发桌面小游戏 5.完善的数据管理,编写好的代码可以分门别类保存 6.支持多线程操作,轻松地开发多线程软件 7.支持Pascal语言转换C++语言 8.支持C++11规范 9.支持一百多种皮肤设置,可DIY皮肤 10.支持导入STL格式的3D打印文件 11.支持实时绘图模式【命令:Cmd.Input();】 12.代码提示及代码自动完成功能【快捷键:Alt+Backspace】 13.代码自动格式化【保存及编译运行时】 14.支持导入STL格式的3D打印文件 15.支持用户自定义源代码模板 16.支持高精度运算和进制转换 17.自带C++函数参考手册 18.支持数据代码查询 19.集成在线题和论坛 20.链接C++语言入门视频 21.简单的单机评测功能 可能出现的问题: 1.在打开文件或其它子窗体时,可能因为某些输入法的冲突导致子窗体卡在下层,解决办法是按Ctrl+Alt+Del键打开任务管理器,即可见到子窗体。 2.支持Win7,Win8,Win10,强烈建议win10,更低的版本不支持。 3.如果因之前版本的卸载不干净,使用中可能会弹出找不到某文件的对话框,此时打开软件菜单的工具栏,点击环境选项,在文件和路径栏里点击删除设置并退出按钮,然后再重新默认设置即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值