智谱
前言:
在易语言开发中,我们经常需要在窗口上显示一些自定义的文字或图片信息。通常的做法是使用标签、画板等组件,但这种方式有几个明显的缺点:
-
资源消耗大:每个组件都是一个窗口对象,创建大量组件会消耗较多系统资源
-
样式受限:自带组件的样式比较单一,美化起来很麻烦
-
跨窗口绘制难:很难在其他程序窗口上直接绘制内容
今天分享的这个绘制模块,正好解决了这些问题。它可以直接在任意窗口上绘制文字和图片,无需创建额外的组件,非常轻量高效。
使用效果:

下载地址:
一、模块核心功能
这个模块主要提供了两个核心命令:
| 命令 | 功能说明 |
|---|---|
绘制文本() |
在指定窗口的指定位置绘制文字 |
绘制图片() |
在指定窗口的指定位置绘制图片 |
除此之外,模块还封装了窗口创建和消息循环处理,让整个绘制流程更加简洁。
二、使用示例代码
以下是一个完整的示例,演示如何在桌面上显示一个“可达鸭小栈”的标识:
.版本 2
.程序集 窗口程序集_窗口1
.程序集变量 hwnd, 整数型
.程序集变量 x, 整数型
.子程序 _窗口1_创建完毕
' 取桌面窗口句柄作为绘制目标
hwnd = 窗口_取桌面句柄 ()
线程_启动 (&子程序1)
.子程序 子程序1
x = 445
' 创建绘制窗口,指定消息处理函数
CreateWindow (hwnd, , , , 30, &Messageloop1)
Messageloop ()
.子程序 Messageloop1
.局部变量 ls, 精易_位置和大小
' 获取目标窗口的大小
ls = 窗口_取位置和大小 (hwnd, )
' 动态计算绘制位置(实现自适应)
x = 445 + ls.宽度 - 1010
' 在计算出的位置绘制红色文字
绘制文本 (“可达鸭小栈”, x, 5, #红色, 100)
' 如果需要显示图片,取消下面这行的注释
' 绘制图片 (x, 5, 124, 29, #图片2)
代码解析
-
获取目标窗口:通过
窗口_取桌面句柄()获取桌面窗口的句柄,你也可以换成其他任何窗口的句柄 -
创建绘制层:
CreateWindow()命令在目标窗口上创建一个绘制层,最后一个参数&Messageloop1指定了绘制消息的处理函数 -
动态定位:在
Messageloop1中,通过窗口_取位置和大小()获取窗口当前尺寸,然后动态计算绘制位置——这样即使窗口大小改变,文字也能显示在正确的位置 -
绘制内容:使用
绘制文本()或绘制图片()命令完成实际绘制
四、应用场景
这类绘制模块在实际开发中有很多用途:
1. 程序界面美化
可以给程序加上自定义的标题栏、边框装饰,让程序看起来更专业。
2. 辅助工具信息显示
在游戏或多窗口应用中,可以将运行日志、状态信息直接绘制在对应窗口上,非常直观。
3. 桌面小工具
在桌面上直接显示提醒文字、时钟、系统状态等,就像各种桌面美化插件一样。
4. 提示框效果
可以实现类似Web网页的Toast通知效果,轻量且美观。
五、技术原理浅析
这个模块的核心技术是窗口自绘(Custom Draw)和子类化(Subclassing)。
简单来说,Windows程序是基于“消息”来工作的。当窗口需要重画时,系统会发送WM_PAINT消息。这个模块的原理就是:
-
拦截目标窗口的绘制消息
-
在原始绘制完成的基础上,添加我们自己的绘制代码
-
最后把绘制结果呈现出来
通过这种方式,我们不需要修改原窗口的代码,就能给它“贴”上额外的内容。
六、注意事项
-
模块依赖:这个模块可能依赖精易模块或其他支持库,使用前请确保已正确引用
-
绘制刷新:如果目标窗口被覆盖后重画,我们绘制的内容可能会消失,需要在消息循环中持续重绘
-
性能考虑:频繁刷新绘制可能会消耗一定的CPU资源,建议按需刷新而非实时刷新
-
权限问题:向其他进程的窗口绘制内容,可能需要相应的操作系统权限

![私有化部署源码[2026-04-13更新]-可达鸭小栈](https://www.ikdya.com/wp-content/uploads/2026/03/QQ20260309-160657-1024x655.png)










- 最新
- 最热
只看作者