易IDE视觉库插件开发文档

插件开发


绘画相关API

[toc]


iDraw_canvas_isDxRender 最低要求版本: v1.0.801

// 判断当前程序是否使用DX渲染
bool iDraw_canvas_isDxRender();

iDrawD2D_APICALL ExSetLastError 最低要求版本: v1.0.801

// 设置最后错误
int iDrawD2D_APICALL ExSetLastError(int code);

iDrawD2D_APICALL ExGetLastError 最低要求版本: v1.0.801

// 获取最后错误
int iDrawD2D_APICALL ExGetLastError();

iDraw_canvas_destroy 最低要求版本: v1.0.801

// 销毁绘画画布, 调用后会把传递进来的值修改为0
bool iDraw_canvas_destroy(LPCANVAS& hCanvas);

iDraw_canvas_create 最低要求版本: v1.0.801

// 创建一个绘画画布, 如果绘画目标的尺寸改变, 应该调用 _canvas_resize() 来调整尺寸
// hWnd = 窗口句柄, 可以为0, 为了兼容D2D1.0使用的参数
// width = 画布宽度
// height = 画布高度
LPCANVAS iDraw_canvas_create(HWND hWnd, UINT width, UINT height);

iDraw_canvas_begindraw 最低要求版本: v1.0.801

// 开始绘画, 绘画前必须调用, 调用后才可以进行绘画操作, 结束绘画时必须调用 _canvas_enddraw() 来提交绘画结果
// hCanvas = 画布句柄
bool iDraw_canvas_begindraw(const LPCANVAS hCanvas);

iDraw_canvas_enddraw 最低要求版本: v1.0.801

// 结束绘画, 返回绘画是否有错误, 如果有错误可以调用 ExGetLastError() 获取错误码, 如果错误码是 D2DERR_RECREATE_TARGET 则需要重新创建D2D资源了
// hCanvas = 画布句柄
bool iDraw_canvas_enddraw(const LPCANVAS hCanvas);

iDraw_canvas_resize 最低要求版本: v1.0.801

// 重新调整画布尺寸
// hCanvas = 画布句柄
// cx = 新的画布宽度
// cy = 新的画布高度
bool iDraw_canvas_resize(const LPCANVAS hCanvas, int cx, int cy);

iDraw_canvas_getsize 最低要求版本: v1.0.801

// 获取画布的尺寸
// hCanvas = 画布句柄
// pWidth = 接收画布宽度的指针, 为0则不接收
// pHeight = 接收画布高度的指针, 为0则不接收
bool iDraw_canvas_getsize(const LPCANVAS hCanvas, UINT* pWidth, UINT* pHeight);

iDraw_canvas_getdc 最低要求版本: v1.0.801

// 获取画布对应的GDI HDC
// 只能在 _canvas_begindraw() 和 _canvas_enddraw() 之间调用
// 在调用 _canvas_enddraw() 前必须调用 _canvas_releasedc() 进行释放, 否则 _canvas_enddraw() 将调用失败
// hCanvas = 画布句柄
HDC iDraw_canvas_getdc(const LPCANVAS hCanvas);

iDraw_canvas_releasedc 最低要求版本: v1.0.801

// 释放 _canvas_getdc() 获取的HDC, 如果有调用 _canvas_getdc(), 则必须调用这个函数释放
// hCanvas = 画布句柄
void iDraw_canvas_releasedc(const LPCANVAS hCanvas);

iDraw_canvas_clear 最低要求版本: v1.0.801

// 清除画布
// hCanvas = 画布句柄
// argb = 清除画布时填充的ARGB颜色, 0=透明
bool iDraw_canvas_clear(const LPCANVAS hCanvas, ARGB argb);

iDraw_canvas_flush 最低要求版本: v1.0.801

// 执行所有挂起的绘图命令
// hCanvas = 画布句柄
bool iDraw_canvas_flush(const LPCANVAS hCanvas);

iDraw_canvas_SetTarget 最低要求版本: v1.0.801

// 设置当前渲染的图像, 设置之后绘画操作会保存到 image 参数里, 类似与GDI的位图
// hCanvas = 画布句柄
// image = 图像句柄
bool iDraw_canvas_SetTarget(const LPCANVAS hCanvas, LPEX_IMAGE image);

iDraw_canvas_ReTarget 最低要求版本: v1.0.801

// 还原当前渲染图像
// hCanvas = 画布句柄
bool iDraw_canvas_ReTarget(const LPCANVAS hCanvas);

iDraw_canvas_GetTarget 最低要求版本: v1.0.801

// 获取当前渲染图像句柄, 返回的句柄不使用时需要调用 _canvas_FreeTarget() 进行释放
// hCanvas = 画布句柄
LPEX_IMAGE iDraw_canvas_GetTarget(const LPCANVAS hCanvas);

iDraw_canvas_FreeTarget 最低要求版本: v1.0.801

// 释放 _canvas_GetTarget() 返回的图像句柄
// hCanvas = 画布句柄
// image = _canvas_GetTarget() 返回的值
void iDraw_canvas_FreeTarget(const LPCANVAS hCanvas, LPEX_IMAGE image);

iDraw_canvas_translate 最低要求版本: v1.0.801

// 平移
// hCanvas = 画布句柄
// x, y = 平移的横向纵向坐标
bool iDraw_canvas_translate(const LPCANVAS hCanvas, float x, float y);

iDraw_canvas_scale 最低要求版本: v1.0.801

// 缩放
// hCanvas = 画布句柄
// x, y = 缩放的坐标点
// scaleX, scaleY = 缩放的横向纵向比例
bool iDraw_canvas_scale(const LPCANVAS hCanvas, float x, float y, float scaleX, float scaleY);

iDraw_canvas_rotate 最低要求版本: v1.0.801

// 旋转
// hCanvas = 画布句柄
// x, y = 旋转的坐标点
// rotate = 旋转的角度, 负数则反向旋转
bool iDraw_canvas_rotate(const LPCANVAS hCanvas, float x, float y, float rotate);

iDraw_canvas_drawRectangle 最低要求版本: v1.0.801

// 绘画矩形
// hCanvas = 画布句柄
// hPen = 边框画笔
// prc = RECT_F 矩形指针
bool iDraw_canvas_drawRectangle(const LPCANVAS hCanvas, const LPEX_PEN hPen, const LPCRECT_F prc);

iDraw_canvas_fillRectangle 最低要求版本: v1.0.801

// 填充矩形
// hCanvas = 画布句柄
// hBrush = 填充的画刷
// prc = RECT_F 矩形指针
bool iDraw_canvas_fillRectangle(const LPCANVAS hCanvas, const LPEX_BRUSH hBrush, const LPCRECT_F prc);

iDraw_canvas_drawEllipse 最低要求版本: v1.0.801

// 绘画椭圆
// hCanvas = 画布句柄
// hPen = 边框画笔
// prc = ELLIPSE_F 椭圆位置指针, 记录一个中心点和原的宽度和高度
bool iDraw_canvas_drawEllipse(const LPCANVAS hCanvas, const LPEX_PEN hPen, const LPCELLIPSE_F prc);

iDraw_canvas_fillEllipse 最低要求版本: v1.0.801

// 填充椭圆
// hCanvas = 画布句柄
// hBrush = 填充画刷
// prc = ELLIPSE_F 椭圆位置指针, 记录一个中心点和原的宽度和高度
bool iDraw_canvas_fillEllipse(const LPCANVAS hCanvas, const LPEX_BRUSH hBrush, const LPCELLIPSE_F prc);

iDraw_canvas_drawRoundedRectangle 最低要求版本: v1.0.801

// 绘画圆角矩形
// hCanvas = 画布句柄
// hPen = 边框画笔
// prcRounded = RECTROUNDED_F 圆角矩形指针
bool iDraw_canvas_drawRoundedRectangle(const LPCANVAS hCanvas, const LPEX_PEN hPen, const LPCRECTROUNDED_F prcRounded);

iDraw_canvas_fillRoundedRectangle 最低要求版本: v1.0.801

// 填充圆角矩形
// hCanvas = 画布句柄
// hBrush = 填充画刷
// prcRounded = RECTROUNDED_F 圆角矩形指针
bool iDraw_canvas_fillRoundedRectangle(const LPCANVAS hCanvas, const LPEX_BRUSH hBrush, const LPCRECTROUNDED_F prcRounded);

iDraw_canvas_drawLine 最低要求版本: v1.0.801

// 绘画直线
// hCanvas = 画布句柄
// hPen = 线条画笔
// ppt = 线条坐标
bool iDraw_canvas_drawLine(const LPCANVAS hCanvas, const LPEX_PEN hPen, const LPCLINEPOINT_F ppt);

iDraw_canvas_drawpath 最低要求版本: v1.0.801

// 绘画路径
// hCanvas = 画布句柄
// hPen = 边框画笔
// path = 路径指针
bool iDraw_canvas_drawpath(const LPCANVAS hCanvas, const LPEX_PEN hPen, const LPEX_PATH path);

iDraw_canvas_fillpath 最低要求版本: v1.0.801

// 填充路径
// hCanvas = 画布句柄
// hBrush = 填充画刷
// path = 路径指针
bool iDraw_canvas_fillpath(const LPCANVAS hCanvas, const LPEX_BRUSH hBrush, const LPEX_PATH path);

iDraw_canvas_drawimage 最低要求版本: v1.0.801

// 绘画图像, 把整个图像绘画到画布指定的位置, 不会对图像进行缩放
// hCanvas = 画布句柄
// image = 图像句柄
// left = 绘画到画布上的左边位置
// top = 绘画到画布上的顶边位置
// alpha = 透明度, 0=完全透明, 255=完全不透明
bool iDraw_canvas_drawimage(const LPCANVAS hCanvas, LPEX_IMAGE image, float left, float top, BYTE alpha);

iDraw_canvas_drawimagerect 最低要求版本: v1.0.801

// 绘画图像, 把整个图像绘画到画布指定的位置, 如果指定的大小和图像的不同, 则会缩放
// hCanvas = 画布句柄
// image = 图像句柄
// left = 绘画到画布上的左边位置
// top = 绘画到画布上的顶边位置
// right = 绘画到画布上的右边位置
// bottom = 绘画到画布上的底边位置
// alpha = 透明度, 0=完全透明, 255=完全不透明
bool iDraw_canvas_drawimagerect(const LPCANVAS hCanvas, LPEX_IMAGE image, float left, float top, float right, float bottom, BYTE alpha);

iDraw_canvas_drawimagerectrect 最低要求版本: v1.0.801

// 绘画图像, 从图像的某个位置绘画到画布某个位置, 尺寸不同会缩放
// hCanvas = 画布句柄
// image = 图像句柄
// dstLeft = 绘画到画布上的左边位置
// dstTop = 绘画到画布上的顶边位置
// dstRight = 绘画到画布上的右边位置
// dstBottom = 绘画到画布上的底边位置
// srcLeft = 从图像的左边位置
// srcTop = 从图像的顶边位置
// srcRight = 从图像的右边位置
// srcBottom = 从图像的底边位置
// alpha = 透明度, 0=完全透明, 255=完全不透明
bool iDraw_canvas_drawimagerectrect(const LPCANVAS hCanvas, LPEX_IMAGE image,
    float dstLeft, float dstTop, float dstRight, float dstBottom,
    float srcLeft, float srcTop, float srcRight, float srcBottom, BYTE alpha);

iDraw_canvas_drawimagegridPadding 最低要求版本: v1.0.801

// 绘画九宫图像, 尺寸不同会缩放
// hCanvas = 画布句柄
// image = 图像句柄
// dstLeft = 绘画到画布上的左边位置
// dstTop = 绘画到画布上的顶边位置
// dstRight = 绘画到画布上的右边位置
// dstBottom = 绘画到画布上的底边位置
// srcLeft = 从图像的左边位置
// srcTop = 从图像的顶边位置
// srcRight = 从图像的右边位置
// srcBottom = 从图像的底边位置
// gridPaddingLeft = 九宫区域左边
// gridPaddingTop = 九宫区域顶边
// gridPaddingRight = 九宫区域右边
// gridPaddingBottom = 九宫区域底边
// alpha = 透明度, 0=完全透明, 255=完全不透明
bool iDraw_canvas_drawimagegridPadding(const LPCANVAS hCanvas, LPEX_IMAGE image,
    float dstLeft, float dstTop, float dstRight, float dstBottom,
    float srcLeft, float srcTop, float srcRight, float srcBottom,
    float gridPaddingLeft, float gridPaddingTop, float gridPaddingRight, float gridPaddingBottom,
    DWORD dwFlags, BYTE alpha);

iDraw_canvas_calctextsize 最低要求版本: v1.0.801

// 计算文本尺寸
// hCanvas = 画布句柄
// font = 字体句柄
// text = 需要计算的文本
// textLen = 文本长度, 如果为-1则text必须是\\0结尾
// textFormat = 文本对齐格式, 参考 DT_ 开头常量, 与 win32API DrawText一样
// layoutWidth = 布局宽度, 计算文本会根据这个宽度计算行数, 行数不同高度就会不同
// layoutHeight = 布局高度
// pWidth = 接收计算出的文本宽度
// pHeight = 接收计算出的文本高度
bool iDraw_canvas_calctextsize(const LPCANVAS hCanvas, LPEX_FONT font, LPCWSTR text, size_t textLen,
    DWORD textFormat, float layoutWidth, float layoutHeight, float* pWidth, float* pHeight);

iDraw_canvas_drawtext 最低要求版本: v1.0.801

// 绘画文本
// hCanvas = 画布句柄
// font = 字体句柄
// hbrText = 文本画刷
// text = 需要绘画的文本
// textLen = 文本长度, 如果为-1则text必须是\\0结尾
// textFormat = 文本对齐格式, 参考 DT_ 开头常量, 与 win32API DrawText一样
// prc = 文本绘画的位置
bool iDraw_canvas_drawtext(const LPCANVAS hCanvas, LPEX_FONT font, LPEX_BRUSH hbrText, LPCWSTR text, size_t textLen, DWORD textFormat, const RECT_F* prc);

iDraw_canvas_drawtextex 最低要求版本: v1.0.801

// 绘画文本
// hCanvas = 画布句柄
// font = 字体句柄
// hbrText = 文本画刷
// text = 需要绘画的文本
// textLen = 文本长度, 如果为-1则text必须是\\0结尾
// textFormat = 文本对齐格式, 参考 DT_ 开头常量, 与 win32API DrawText一样
// prc = 文本绘画的位置
// iGlowsize = 暂未使用, 传递0
// crShadow = 暂未使用, 传递0
// lParam = 暂未使用, 传递0
// prclayout = 暂未使用, 传递0
// outrcText = 接收绘画文本的区域
bool iDraw_canvas_drawtextex(const LPCANVAS hCanvas, LPEX_FONT font, LPEX_BRUSH hbrText,
    LPCWSTR text, size_t textLen, DWORD textFormat, const RECT_F* rc,
    DWORD iGlowsize, ARGB crShadow, LPDRAWTEXTPARAMS lParam, const RECT_F* prclayout, RECT_F* outrcText);

iDraw_canvas_bitblt 最低要求版本: v1.0.801

// 位拷贝, 拷贝数据到画布上
// hCanvas = 画布句柄, 拷贝到这个画布上
// x = 拷贝到画布的左边位置
// y = 拷贝到画布的左边位置
// cx = 拷贝到画布的宽度
// cy = 拷贝到画布的高度
// sCanvas = 从哪个画布上拷贝
// x1 = 从 sCanvas 画布上的哪个位置开始拷贝
// y1 = 从 sCanvas 画布上的哪个位置开始拷贝
// rop = 光栅操作代码, 一般是 SRCCOPY, D2D渲染忽略这个参数, D2D只支持 SRCCOPY
bool iDraw_canvas_bitblt(const LPCANVAS hCanvas, int x, int y, int cx, int cy, const LPCANVAS sCanvas, int x1, int y1, DWORD rop);

iDraw_canvas_alphablend 最低要求版本: v1.0.801

// 混合拷贝, 拷贝数据到画布上
// hCanvas = 画布句柄, 拷贝到这个画布上
// xoriginDest = 拷贝到画布的左边位置
// yoriginDest = 拷贝到画布的左边位置
// wDest = 拷贝到画布的宽度
// hDest = 拷贝到画布的高度
// sCanvas = 从哪个画布上拷贝
// xoriginSrc = 从 sCanvas 画布上的哪个位置开始拷贝
// yoriginSrc = 从 sCanvas 画布上的哪个位置开始拷贝
// wSrc = 从 sCanvas 画布上的哪个位置开始拷贝
// hSrc = 从 sCanvas 画布上的哪个位置开始拷贝
// Alpha = 透明度
bool iDraw_canvas_alphablend(const LPCANVAS hCanvas,

iDraw_canvas_setrgn 最低要求版本: v1.0.801

// 暂未实现, 请不要调用
bool iDraw_canvas_setrgn(const LPCANVAS hCanvas, float left, float top, float right, float bottom, int mode);

iDraw_canvas_setClip 最低要求版本: v1.0.801

// 设置裁剪区, 设置后绘画的内容只会在设置的区域里显示
// left = 裁剪区的左边
// top = 裁剪区的顶边
// right = 裁剪区的右边
// bottom = 裁剪区的底边
// mode = 裁剪区模式, 一般填0, 现在内部暂时还没有为D2D和GDI+做个统一的标准, D2D渲染请查看D2D相关的常量, GDI+请参阅GDI+的常量
bool iDraw_canvas_setClip(const LPCANVAS hCanvas, float left, float top, float right, float bottom, int mode);

iDraw_canvas_resetClip 最低要求版本: v1.0.801

// 还原裁剪区, 把上一个设置的裁剪区还原
bool iDraw_canvas_resetClip(const LPCANVAS hCanvas);

iDraw_canvas_SetAntialiasMode 最低要求版本: v1.0.801

// 设置抗锯齿模式, 0=关闭抗锯齿, 1=开启
// 此函数调与 _canvas_SetSmoothingMode, 功能一模一样, 多加一个是为了和d2d名字一样
bool iDraw_canvas_SetAntialiasMode(const LPCANVAS hCanvas, int mode, int* oldMode);

iDraw_canvas_SetSmoothingMode 最低要求版本: v1.0.801

// 设置抗锯齿模式, 0=关闭抗锯齿, 1=开启
// 此函数调用 _canvas_SetAntialiasMode 实现, 功能一模一样, 多加一个是为了和gdi+名字一样
bool iDraw_canvas_SetSmoothingMode(const LPCANVAS hCanvas, int mode, int* oldMode);

iDraw_canvas_SetTextAntialiasMode 最低要求版本: v1.0.801

// 设置字体抗锯齿模式, 0=默认, 1=ClearType抗锯齿(最高质量), 2=灰度抗锯齿, 3=不使用抗锯齿
// 此函数调与 _canvas_SetTextRenderingHint, 功能一模一样, 多加一个是为了和d2d名字一样
bool iDraw_canvas_SetTextAntialiasMode(const LPCANVAS hCanvas, int mode, int* oldMode);

iDraw_canvas_SetTextRenderingHint 最低要求版本: v1.0.801

// 设置字体抗锯齿模式, 0=默认, 1=ClearType抗锯齿(最高质量), 2=灰度抗锯齿, 3=不使用抗锯齿
// 此函数调用 _canvas_SetTextAntialiasMode 实现, 功能一模一样, 多加一个是为了和gdi+名字一样
bool iDraw_canvas_SetTextRenderingHint(const LPCANVAS hCanvas, int mode, int* oldMode);

iDraw_brush_create 最低要求版本: v1.0.801

// 创建纯色画刷, 纯色画刷可以调用 _brush_setcolor() 改变画刷颜色
// color = ARGB颜色
LPEX_BRUSH iDraw_brush_create(ARGB color);

iDraw_brush_create_LinearGradient 最低要求版本: v1.0.801

// 创建线性渐变画刷
// pt1,pt2 = 起点, 终点坐标
// color,colorCount = 颜色数组, 颜色数组数量
// fillMode = 填充模式
// pRatios, ratiosCount = 渐变比例数组, 取值范围0-1, 数组数量
LPEX_BRUSH iDraw_brush_create_LinearGradient(const POINT_F& pt1, const POINT_F& pt2, ARGB* color, DWORD colorCount, int fillMode = 0, const float* pRatios = 0, DWORD ratiosCount = 0);

iDraw_brush_create_RadialGradient 最低要求版本: v1.0.801

// 创建放射渐变画刷, 从中心点往外扩散渐变
// pos = 包含中心点以及向外扩展的长度
// color,colorCount = 颜色数组, 颜色数组数量
// fillMode = 填充模式
// pRatios, ratiosCount = 渐变比例数组, 取值范围0-1, 数组数量
LPEX_BRUSH iDraw_brush_create_RadialGradient(const ELLIPSE_F* pos, ARGB* color, DWORD colorCount, int fillMode = 0, const float* pRatios = 0, DWORD ratiosCount = 0);

iDraw_brush_destroy 最低要求版本: v1.0.801

// 销毁画刷, 销毁后会把传递进来的值复制为0
bool iDraw_brush_destroy(LPEX_BRUSH& pBrush);

iDraw_brush_setcolor 最低要求版本: v1.0.801

// 设置纯色画刷的画刷颜色, 非纯色画刷会设置失败
// brush = 纯色画刷的句柄
// color = 新的画刷颜色
bool iDraw_brush_setcolor(LPEX_BRUSH brush, ARGB color);

iDraw_brush_getcolor 最低要求版本: v1.0.801

// 获取纯色画刷的颜色, 返回的是ARGB颜色
// brush = 纯色画刷的句柄
DWORD iDraw_brush_getcolor(LPEX_BRUSH brush);

iDraw_brush_setstartpoint 最低要求版本: v1.0.801

// 设置渐变画刷起始位置, GDI+暂未支持
// brush = 线性渐变画刷
// x, y = 新的起始位置
bool iDraw_brush_setstartpoint(LPEX_BRUSH brush, float x, float y);

iDraw_brush_setendpoint 最低要求版本: v1.0.801

// 设置渐变画刷结束位置, GDI+暂未支持
// brush = 线性渐变画刷
// x, y = 新的结束位置
bool iDraw_brush_setendpoint(LPEX_BRUSH brush, float x, float y);

iDraw_brush_getstartpoint 最低要求版本: v1.0.801

// 获取渐变画刷起始位置, GDI+暂未支持
// brush = 线性渐变画刷
// x, y = 接收新的起始位置指针, 为0则不获取
bool iDraw_brush_getstartpoint(LPEX_BRUSH brush, float* x, float* y);

iDraw_brush_getendpoint 最低要求版本: v1.0.801

// 获取渐变画刷结束位置, GDI+暂未支持
// brush = 线性渐变画刷
// x, y = 接收新的结束位置指针, 为0则不获取
bool iDraw_brush_getendpoint(LPEX_BRUSH brush, float* x, float* y);

iDraw_brush_setcenter 最低要求版本: v1.0.801

// 设置放射渐变画刷中心坐标, GDI+暂未支持
// brush = 放射渐变画刷
// x, y = 新的中心点位置
bool iDraw_brush_setcenter(LPEX_BRUSH brush, float x, float y);

iDraw_brush_GetCenter 最低要求版本: v1.0.801

// 获取放射渐变画刷中心坐标, GDI+暂未支持
// brush = 放射渐变画刷
// x, y = 接收新的中心点位置指针, 为0则不获取
bool iDraw_brush_GetCenter(LPEX_BRUSH brush, float* x, float* y);

iDraw_brush_SetGradientOriginOffset 最低要求版本: v1.0.801

// 设置放射渐变原点偏移, GDI+暂未支持
// brush = 放射渐变画刷
// x, y = 新的偏移位置
bool iDraw_brush_SetGradientOriginOffset(LPEX_BRUSH brush, float x, float y);

iDraw_brush_GetGradientOriginOffset 最低要求版本: v1.0.801

// 获取放射渐变原点偏移, GDI+暂未支持
// brush = 放射渐变画刷
// x, y = 接收新的偏移位置指针, 为0则不获取
bool iDraw_brush_GetGradientOriginOffset(LPEX_BRUSH brush, float* x, float* y);

iDraw_brush_SetRadiusX 最低要求版本: v1.0.801

// 设置放射渐变画刷横向半径, GDI+暂未支持
// brush = 放射渐变画刷
// x = 中心点横向半径
bool iDraw_brush_SetRadiusX(LPEX_BRUSH brush, float x);

iDraw_brush_SetRadiusY 最低要求版本: v1.0.801

// 设置放射渐变画刷纵向半径, GDI+暂未支持
// brush = 放射渐变画刷
// y = 中心点纵向半径
bool iDraw_brush_SetRadiusY(LPEX_BRUSH brush, float y);

iDraw_brush_GetRadiusX 最低要求版本: v1.0.801

// 获取放射渐变画刷横向半径, GDI+暂未支持
// brush = 放射渐变画刷
float iDraw_brush_GetRadiusX(LPEX_BRUSH brush);

iDraw_brush_GetRadiusY 最低要求版本: v1.0.801

// 获取放射渐变画刷纵向半径, GDI+暂未支持
// brush = 放射渐变画刷
float iDraw_brush_GetRadiusY(LPEX_BRUSH brush);

iDraw_pen_create 最低要求版本: v1.0.801

// 创建画笔
// color = 画笔ARGB颜色
// width = 画笔宽度
// style = 画笔样式, D2D1_DASH_STYLE/Gdiplus::DashStyle枚举常量的值, 0=实线,1=划线,2=点线,3=点划线,4=点点划线,5=自定义, 请使用 dashes 参数
// dashes = 自定义画笔数组, [0]=有线部分,[1]=空白部分,[2]=有线部分,[3]=空白部分....成员数需要 dashesCount 指定
// dashesCount = dashes 这个数组的成员数
LPEX_PEN iDraw_pen_create(ARGB color, float width = 1.0f, int style = 0, const float* dashes = 0, int dashesCount = 0);

iDraw_pen_destroy 最低要求版本: v1.0.801

// 销毁画笔, 销毁后会把传递进来的值复制为0
// pen = 画笔句柄
bool iDraw_pen_destroy(LPEX_PEN& pPen);

iDraw_pen_setcolor 最低要求版本: v1.0.801

// 设置画笔的颜色
// pen = 画笔句柄
// color = 新的画笔ARGB颜色
bool iDraw_pen_setcolor(LPEX_PEN pen, ARGB color);

iDraw_pen_getcolor 最低要求版本: v1.0.801

// 获取画笔的颜色
// pen = 画笔句柄
DWORD iDraw_pen_getcolor(LPEX_PEN pen);

iDraw_pen_SetWidth 最低要求版本: v1.0.801

// 设置画笔的宽度
// pen = 画笔句柄
// width = 画笔宽度
bool iDraw_pen_SetWidth(LPEX_PEN pen, float width);

iDraw_pen_GetWidth 最低要求版本: v1.0.801

// 获取画笔的宽度
// pen = 画笔句柄
float iDraw_pen_GetWidth(LPEX_PEN pen);

iDraw_pen_SetDashStyle 最低要求版本: v1.0.801

// 设置画笔线条样式
// pen = 画笔句柄
// style = 0=实线, 1=划线{2, 2}, 2=点线{0, 2}, 3=点划线{2, 2, 0, 2}, 4=点点划线{2, 2, 0, 2, 0, 2}, 5=自定义 Gdiplus::DashStyle 或者 D2D1_DASH_STYLE 这两个枚举常量的成员
// dashes = 点线的数组, 划线={2,2}, 点线={0,2}, 点划线={2,2,0,2}, 点点划线={2,2,0,2,0,2}, 其他请自定义
// dashesCount = 数组成员数
bool iDraw_pen_SetDashStyle(LPEX_PEN pen, int style = 0, float* dashes = 0, int dashesCount = 0);

iDraw_path_create 最低要求版本: v1.0.801

// 创建路径
// fillMode = 未使用, 请填0
LPEX_PATH iDraw_path_create(int fillMode);

iDraw_path_createroundedrectangle 最低要求版本: v1.0.801

// 创建圆角矩形路径
// rcRounded = 圆角矩形
// fillMode = 未使用, 请填0
LPEX_PATH iDraw_path_createroundedrectangle(const LPCRECTROUNDED_F prcRounded, int fillMode);

iDraw_path_createrectangle 最低要求版本: v1.0.801

// 创建直角矩形路径
// prc = 直角矩形
// fillMode = 未使用, 请填0
LPEX_PATH iDraw_path_createrectangle(const LPCRECT_F prc, int fillMode);

iDraw_path_destroy 最低要求版本: v1.0.801

// 销毁画笔, 销毁后会把传递进来的值复制为0
// path = 路径句柄
bool iDraw_path_destroy(LPEX_PATH& path);

iDraw_path_beginfigure 最低要求版本: v1.0.801

// 在指定点开始一个新路径
// path = 路径句柄
// ppt = 坐标点指针, 为0则不使用
bool iDraw_path_beginfigure(LPEX_PATH path, const LPCPOINT_F ppt);

iDraw_path_endfigure 最低要求版本: v1.0.801

// 结束当前路径
// path = 路径句柄
bool iDraw_path_endfigure(LPEX_PATH path);

iDraw_path_reset 最低要求版本: v1.0.801

// 重置为空路径
// path = 路径句柄
bool iDraw_path_reset(LPEX_PATH path);

iDraw_path_addarc 最低要求版本: v1.0.801

// 添加弧
// path = 路径句柄
// 
bool iDraw_path_addarc(LPEX_PATH path, float x1, float y1, float x2, float y2, float radiusX, float radiusY, bool fClockwise);

iDraw_path_addbezier 最低要求版本: v1.0.801

// 添加贝赛尔曲线
// path = 路径句柄
// pt1, pt2, pt3, pt4 = 4个坐标点
bool iDraw_path_addbezier(LPEX_PATH path, const POINT_F& pt1, const POINT_F& pt2, const POINT_F& pt3, const POINT_F& pt4);

iDraw_path_addline 最低要求版本: v1.0.801

// 添加直线
// path = 路径句柄
// pt1, pt2 = 起始点坐标和结束点坐标
bool iDraw_path_addline(LPEX_PATH path, const POINT_F& pt1, const POINT_F& pt2);

iDraw_path_addrect 最低要求版本: v1.0.801

// 添加矩形
// path = 路径句柄
// rc = 矩形
bool iDraw_path_addrect(LPEX_PATH path, const RECT_F& rc);

iDraw_path_addroundedrect 最低要求版本: v1.0.801

// 添加圆角矩形
// path = 路径句柄
// rc = 矩形
// radiusTopLeft = 左上角圆角度数
// radiusTopRight = 右上角圆角度数
// radiusBottomLeft = 左下角圆角度数
// radiusBottomRight = 右下角圆角度数
bool iDraw_path_addroundedrect(LPEX_PATH path, const RECT_F& rc, float radiusTopLeft, float radiusTopRight, float radiusBottomLeft, float radiusBottomRight);

iDraw_path_open 最低要求版本: v1.0.801

// 打开路径, 打开后才能往路径里添加
// path = 路径句柄
bool iDraw_path_open(LPEX_PATH path);

iDraw_path_close 最低要求版本: v1.0.801

// 关闭路径, 添加完毕后, 使用路径前请关闭路径
// path = 路径句柄
bool iDraw_path_close(LPEX_PATH path);

iDraw_path_getbounds 最低要求版本: v1.0.801

// 取路径边界矩形
// path = 路径句柄
// prc = 接收路径边界矩形
bool iDraw_path_getbounds(LPEX_PATH path, LPRECT_F prc);

iDraw_path_hittest 最低要求版本: v1.0.801

// 测试坐标是否在路径范围内
// path = 路径句柄
// pt = 坐标点
bool iDraw_path_hittest(LPEX_PATH path, const POINT_F& pt);

iDraw_img_destroy 最低要求版本: v1.0.801

// 图片
bool iDraw_img_destroy(LPEX_IMAGE& img);

iDraw_img_create 最低要求版本: v1.0.801

LPEX_IMAGE iDraw_img_create(UINT width, UINT height);

iDraw_img_create_frommemory 最低要求版本: v1.0.801

LPEX_IMAGE iDraw_img_create_frommemory(const void* pData, DWORD len);

iDraw_img_create_fromfile 最低要求版本: v1.0.801

LPEX_IMAGE iDraw_img_create_fromfile(LPCWSTR file);

iDraw_img_create_frombitmap 最低要求版本: v1.0.801

// 从gdi位图创建图像
// hBitmap = gdi位图
// hPalette = 调色板句柄
// fPreAlpha = 是否使用透明通道, true = 使用, false = 使用预乘的透明通道
LPEX_IMAGE iDraw_img_create_frombitmap(HBITMAP hBitmap, HPALETTE hPalette, bool fPreAlpha);

iDraw_img_create_formicon 最低要求版本: v1.0.801

// 从gdi图标创建图像
// hIcon = GDI图标句柄
LPEX_IMAGE iDraw_img_create_formicon(HICON hIcon);

iDraw_img_create_fromstream 最低要求版本: v1.0.801

// 从流对象创建图像
// stream = 流对象指针
LPEX_IMAGE iDraw_img_create_fromstream(IStream* stream);

iDraw_img_getsize 最低要求版本: v1.0.801

// 获取图像尺寸
// image = 图像句柄
// pWidth = 接收图像宽度的指针, 为0则不获取
// pHeight = 接收图像高度的指针, 为0则不获取
bool iDraw_img_getsize(LPEX_IMAGE image, UINT* pWidth, UINT* pHeight);

iDraw_img_width 最低要求版本: v1.0.801

// 获取图像宽度
// image = 图像句柄
UINT iDraw_img_width(LPEX_IMAGE image);

iDraw_img_height 最低要求版本: v1.0.801

// 获取图像高度
// image = 图像句柄
UINT iDraw_img_height(LPEX_IMAGE image);

iDraw_img_copyrect 最低要求版本: v1.0.801

// 从当前图片拷贝一份新的图片出来, 返回新的图片句柄
// image = 图像句柄
// 4个参数分别为需要复制的左顶宽高, 如果宽度/高度等于0, 则使用图像的宽度/高度
LPEX_IMAGE iDraw_img_copyrect(LPEX_IMAGE image, UINT x, UINT y, UINT width, UINT height);

iDraw_img_copy 最低要求版本: v1.0.801

// 从图像拷贝一份新的图像出来, 返回新的图像句柄, 拷贝比重新创建速度要块
// image = 图像句柄
LPEX_IMAGE iDraw_img_copy(LPEX_IMAGE image);

iDraw_img_lock 最低要求版本: v1.0.801

// 锁定图像, 成功返回true, 失败返回false, 不使用时必须调用 _img_unlock 解锁图像
// image = 图像句柄
// x,y,width,height = 左顶宽高, 宽高为0时会自动获取图片大小
// flags = 1=读, 2=写, 3=读写
// lockData = 锁定图像数据, 解锁图像时需要使用
bool iDraw_img_lock(LPEX_IMAGE image, UINT x, UINT y, UINT width, UINT height, DWORD flags, EX_IMAGELOCK* lockData);

iDraw_img_unlock 最低要求版本: v1.0.801

// 解锁图像
// image = 图像句柄
// lockData = 锁定图像数据, 由 _img_lock 获得
bool iDraw_img_unlock(LPEX_IMAGE image, EX_IMAGELOCK* lockData);

iDraw_img_getframecount 最低要求版本: v1.0.801

// 取图像帧数
// image = 图像句柄
UINT iDraw_img_getframecount(LPEX_IMAGE image);

iDraw_img_selectactiveframe 最低要求版本: v1.0.801

// 设置当前活动帧
// image = 图像句柄
// index = 第几帧
bool iDraw_img_selectactiveframe(LPEX_IMAGE image, UINT index);

iDraw_img_save_frombitmap 最低要求版本: v1.0.801

// 从D2D位图指定左顶宽高获取图片或效果数据, 返回图片数据指针和尺寸, 需要调用 _img_free 释放
// pBitmap = D2D位图
// size = 接收返回图片数据的大小
// 左顶右底, 要保存的位置, 宽度/高度为0则使用位图的宽度/高度
LPBYTE iDraw_img_save_frombitmap(ID2D1Image* pBitmap, SIZE_T& size, UINT left, UINT top, UINT right, UINT bottom);

iDraw_img_save_formcanvas 最低要求版本: v1.0.801

// 从绘画句柄里获取图片数据, 返回图片数据指针和尺寸, 需要调用 _img_free 释放
// size = 接收返回图片数据的大小
LPBYTE iDraw_img_save_formcanvas(const LPCANVAS hCanvas, SIZE_T& size);

iDraw_img_save_formcanvasex 最低要求版本: v1.0.801

// 从画布句柄指定左顶宽高获取图片数据, 返回图片数据指针和尺寸, 需要调用 _img_free 释放
// hCanvas = 绘画句柄
// pSize = 接收返回图片数据的大小
// 左顶右底, 要保存的位置, 宽度/高度为0则使用画布句柄的宽度/高度
LPBYTE iDraw_img_save_formcanvasex(const LPCANVAS hCanvas, SIZE_T& size, UINT left, UINT top, UINT right, UINT bottom);

iDraw_img_save 最低要求版本: v1.0.801

// 从图片句柄获取图片数据, 返回图片数据指针和尺寸, 需要调用 _img_free 释放
// image = 图像句柄
// size = 接收返回数据的尺寸, 单位是字节
LPBYTE iDraw_img_save(LPEX_IMAGE image, SIZE_T& size);

iDraw_img_save_fromimage 最低要求版本: v1.0.801

// 从图片句柄指定左顶宽高获取图片数据, 返回图片数据指针和尺寸, 需要调用 _img_free 释放
// image = 图像句柄
// size = 接收返回数据的尺寸, 单位是字节
// 4个参数分别为需要复制的左顶宽高, 如果宽度/高度等于0, 则使用图像的宽度/高度
LPBYTE iDraw_img_save_fromimage(LPEX_IMAGE image, SIZE_T& size, UINT left, UINT top, UINT right, UINT bottom);

iDraw_img_ToGdiBitmap 最低要求版本: v1.0.801

// 把图片转成gdi的位图
// image = 图像句柄
HBITMAP iDraw_img_ToGdiBitmap(LPEX_IMAGE image);

iDraw_img_free 最低要求版本: v1.0.801

// 释放 _img_save_xxx 返回的数据
void iDraw_img_free(LPBYTE ptr);

iDraw_font_create_logfont 最低要求版本: v1.0.801

// 字体
// 从LOGFONTW 里创建字体
// flags = 暂未使用, 填0
LPEX_FONT iDraw_font_create_logfont(const LPLOGFONTW logFont, DWORD flags);

iDraw_font_create 最低要求版本: v1.0.801

// 从字体名中创建字体, 如果参数都为0则创建默认字体
// name = 字体名字
// lfHeight = 字符高度, 如果需要转换成字体大小可以调用 _font_height2size() 来转换, 或者调用 _font_size2height() 把字体大小转成字符高度
// fontStyle = 字体风格, 多个风格请使用 或 或起来, 0=正常, 1=粗体, 2=斜体, 3=粗体斜体, 4=下划线, 8=删除线
LPEX_FONT iDraw_font_create(LPCWSTR name = L"微软雅黑", LONG lfHeight = 0, FONTSTYLE fontStyle = FONTSTYLE::FontStyleRegular);

iDraw_font_destroy 最低要求版本: v1.0.801

// 销毁字体, 销毁后会把传递进来的值复制为0
bool iDraw_font_destroy(LPEX_FONT& font);

iDraw_font_height2size 最低要求版本: v1.0.801

// 字符高度转字体大小, 字符高度一般是 LOGFONT 的 lfHeight, 字体大小一般是易语言的字体大小
int iDraw_font_height2size(int height);

iDraw_font_size2height 最低要求版本: v1.0.801

// 字体大小转字符高度, 字符高度一般是 LOGFONT 的 lfHeight, 字体大小一般是易语言的字体大小
int iDraw_font_size2height(int size);

iDraw_font_GetFont 最低要求版本: v1.0.801

// 获取当前字体对象的GDI字体, 不允许调用 DeleteObject() 进行释放
HFONT iDraw_font_GetFont(LPEX_FONT font);

iDraw_rgn_destroy 最低要求版本: v1.0.801

// 销毁区域, 销毁后会把传递进来的值复制为0
bool iDraw_rgn_destroy(LPEX_RGN& hRgn);

iDraw_rgn_create 最低要求版本: v1.0.801

// 创建矩形区域
// left = 左边
// top = 顶边
// right = 右边
// bottom = 底边
LPEX_RGN iDraw_rgn_create(float left, float top, float right, float bottom);

iDraw_rgn_create_round 最低要求版本: v1.0.801

// 创建圆角区域
// left = 左边
// top = 顶边
// right = 右边
// bottom = 底边
// radiusX = 圆角度数
// radiusY = 圆角度数
LPEX_RGN iDraw_rgn_create_round(float left, float top, float right, float bottom, float radiusX, float radiusY);

iDraw_rgn_combine 最低要求版本: v1.0.801

// 合并区域
// hRgnSrc = 要合并的区域
// hRgnDst = 要和 hRgnSrc 合并的区域
// nCombineMode = 合并模式, 0=并集, 1=交集, 2=异或, 其他=排除
// dstOffsetX, dstOffsetY = 平移的坐标, 不需要平移就填0
LPEX_RGN iDraw_rgn_combine(LPEX_RGN hRgnSrc, LPEX_RGN hRgnDst, DWORD nCombineMode, float dstOffsetX, float dstOffsetY);

iDraw_rgn_hittest 最低要求版本: v1.0.801

// 测试指定坐标是否在区域内
bool iDraw_rgn_hittest(LPEX_RGN hRgn, float x, float y);

页面列表

ITEM_HTML