aardio - 用 godking.paint 库绘制文本阴影

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=311)
winform.add(
plus={cls="plus";left=8;top=8;right=752;bottom=304;bgcolor=15793151;edge=1;z=1}
)
/*}}*/

winform.show();

import godking.paint
var p = godking.paint.fromPlus(winform.plus,false/*自动刷新*/,false/*重绘背景*/);
p.textAntiAlias = true;
var rect = ::RECT(50,100,800,400);
var text = "我是文本 hello aardio 我有阴影";
var font = ::LOGFONT(name="黑体";h=40;color=0xFFFF0000;brush=null,bold=true);
var font1 = ::LOGFONT(name="黑体";h=40;color=0x44000000;brush=null,bold=true);

var drawtext = function(angle){
    p.clear(/*颜色*/);
    var path = p.path(1/*0:交叉填充 1:全填充*/);
    path.addText(rect.left /*x1*/,rect.top/*y1*/,rect.right/*x2*/,rect.bottom/*y2*/,text,font,0/*格式*/,0/*水平*/,0/*垂直*/);
    var bd = path.getBounds();
    path.delete();
    
    var m = p.matrix();
    m.shear_angle(angle, ,/*选项*/);
    m.scale(1, 0.5,/*选项*/);
    var bottom = bd.y+bd.height;
    var offsetx = bottom*math.tan(math.rad(angle));
    m.translate(-offsetx, bottom,/*选项*/);
    p.setMatrix(m /*矩阵*/);
    m.delete();
    
    p.drawText( rect /*文本范围RECT*/,text,font1,0/*格式*/,0/*水平*/,0/*垂直*/,false/*截短*/);
    
    p.setMatrix( /*矩阵*/);
    p.drawText( rect /*文本范围RECT*/,text,font,0/*格式*/,0/*水平*/,0/*垂直*/,false/*截短*/);
        
}

var angle,inc = -60,1 ;
winform.setInterval( 
    function(){
        angle += inc;
        if math.abs(angle)==60 inc*=-1;
        drawtext(angle)
        p.plus.update( /*刷新区域RECT*/)
    },10
)

win.loopMessage();

 

站内引用中提供了部分aardio源码: 1. **内存画板及小海龟绘图源码**: ```aardio import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=481;bottom=397) winform.add( button={cls="button";text="Button";left=159;top=347;right=295;bottom=384;z=2}; plus={cls="plus";left=6;top=9;right=478;bottom=328;z=1} ) /*}}*/ import godking.paint var p=godking.paint.fromPlus(winform.plus,true/*自动刷新*/,false/*重绘背景*/) p.bkcolor = 0xFFFFFFFF; p.textAntiAlias = true; p.offsetMode = false; winform.button.oncommand = function(id,event){ p.clear(); var t=p.turtle(); //画复杂图形 t.curx=150; for(i=1;12;1){ t.go(100); t.fillEllipse(25); t.text(tostring(i),-20,-20,40,40,::LOGFONT(name="黑体";point=12;color=0xFFFFFFFF),0,1,1); t.back(); t.left(30); ..win.delay(100); } // 画五角星 t.curx=300 t.angle=0 for(i=1;5;1){ t.go(100); t.right(180*4/5); ..win.delay(100); } } winform.show(); win.loopMessage(); ``` 此代码实现了在内存画板上使用小海龟绘制复杂图形和五角星的功能,使用`godking.paint`创建画板,通过小海龟对象`t`进行图形绘制操作,点击按钮触发绘制过程,绘制过程会有延迟效果,使绘制过程可见[^1]。 2. **加密资源代码示例**: ```aardio import console; var num = console.getNumber( "请输入密码:" ) if num = "123555666" console.dump("恭喜你,答对了") else console.log("对不起,打错了"); console.pause(true); ``` 该代码实现了一个简单的密码验证功能,通过`console.getNumber`获取用户输入的密码,与预设密码比较并输出相应结果,最后暂停控制台等待用户操作[^4]。 3. **自动禁用触控板程序源码**: ```aardio //打开控制面板的鼠标属性 import process.control process.control("mouse") //找到窗口句柄 import winex var hwnd0= winex.waitVisible("鼠标 属性") //找到选项卡句柄 var hwnd=winex.findEx(hwnd0,,"SysTabControl32") //这里改用新学的acc操作,切换选项卡 import winex.accObject var acc = winex.accObject.fromWindow(hwnd) var tab = acc.find(name = "@装置设定值") tab.doDefaultAction() win.delay(100) //找到选项卡对应页面的句柄和禁用按钮句柄 hwnd=winex.findEx(hwnd0,,,"Advanced Features") hwnd=winex.findEx(hwnd,,,"@禁用(&D)") //如果已经处于禁用状态就点击取消 if !win.isEnable(hwnd){ var cancle=winex.findEx(hwnd0,,,"取消") winex.click(cancle) return; } //模拟点击禁用按钮 winex.click(hwnd) //如果弹出警告就模拟点击确定 winex.waitTimeout=500 var warn=winex.waitVisible("警告") if warn { var yes=winex.findEx(warn,,,"确定") winex.click(yes) } win.delay(100) //点击主窗口确定按钮,使设置生效并关闭窗口 var ok=winex.findEx(hwnd0,,,"确定") winex.click(ok) ``` 这段代码实现了自动禁用触控板的功能,通过操作控制面板的鼠标属性窗口,使用`winex`和`winex.accObject`查找窗口、选项卡和按钮句柄,模拟用户操作来禁用触控板,若遇到警告窗口会自动确认,最后点击确定保存设置[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢光庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值