效果:
代码:
import win.ui;
/*DSG{{*/
var winform = win.form(text="启动logo效果演示";right=599;bottom=499;border="none";exmode="toolwindow";mode="popup")
winform.add()
/*}}*/
var i=1
import godking.paint
import gdip;
import inet.http
var logo = ..gdip.bitmap("https://img-blog.csdnimg.cn/ed6dabdec96b4b8e8c52c236c261507a.png")
drawAlphaText =function(){
gdi.layeredBuffer( winform.hwnd,
function( hdc,hMemDc,hMemBitmap,width,height,left,top,hwnd,blendFunction ){
if i>1000 {
winform.clearInterval()
winform.close()
return ;
}
var p=godking.paint.fromHdc(hMemDc)
p.textAntiAlias = true;
p.drawImageF(150,0/*y*/,/*宽*/300,300/*高*/,logo/*图片*/,/*透明度或图片属性*/,true/*保持比例*/)
var rc = ::RECT(0,300,600,400);
rc.inflate(-5,-5)
p.fillRoundRect(rc,50,0x33FFFFFF);
var pa = ..gdip.path(1/*_FillModeWinding*/);
pa.addRoundRect(rc,50);
p.setClipPath(pa/*path*/,0/*_GdipCombineModeReplace区域相交模式*/)
pa.delete()
var bolang = {{-400,400},{-400,350},{-300,380},{-200,350},{-100,380},{0,350},{100,380},{200,350},{300,380},{400,350},{500,380},{600,350},{600,400}}
p.translate(i*10%200 /*水平偏移像素*/,/*垂直偏移像素*/,/*选项*/)
p.fillCurve(bolang,0x55FF8888)
p.resetTransform()
p.translate(i*8%200 /*水平偏移像素*/,/*垂直偏移像素*/,/*选项*/)
p.fillCurve(bolang,0x88FF5555)
p.resetTransform()
p.translate(i*4%200 /*水平偏移像素*/,/*垂直偏移像素*/,/*选项*/)
p.fillCurve(bolang,0xFFFF0000)
p.resetTransform()
p.setClip()
p.translate(2 /*水平偏移像素*/,2/*垂直偏移像素*/,/*选项*/)
p.drawRoundRect(rc,50/*圆角半径*/,0x55888888,3)
p.resetTransform()
p.drawRoundRect(rc,50/*圆角半径*/,0xFFFFFFFF,3)
pa = ..gdip.path(1/*_FillModeWinding*/);
var fmt = gdip.stringformat();
fmt.align = 1/*_StringAlignmentCenter*/ ;
fmt.lineAlign = 1/*_StringAlignmentCenter*/ ;
pa.addstring("正在启动中,请稍等 "++string.format("%.1f",math.round(i/10,2))++" %",gdip.family("黑体"),1/*_FontStyleBold*/,18,::RECTF(0,300,600,50),fmt)
p.drawPath(pa,0xFFBBBBBB/*线条颜色或pen对象*/,2/*线宽*/)
p.fillPath(pa,0xFF880000/*填充颜色或brush对象*/)
fmt.delete()
pa.delete()
..gdi.updateLayeredWindow( hwnd,hMemDc,::SIZE(width,height) ,blendFunction );
i++;
p.close();
}
)
}
winform.transparent(true);
drawAlphaText()
winform.setInterval(drawAlphaText,50)
win.setTopmost(winform.hwnd);
win.loopMessage();