用 godking.paint 库绘制文本阴影

光庆 10天前 252

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();
最新回复 (2)
  • zhhyit 9天前
    0 2
    咦😾,这个更酷Cool
  • breezee 8天前
    0 3
    光庆大佬玩得越来越花了😁
返回