厉害!学习了!
照虎画猫,来一个static控件版的跑马灯效果↓
//水平方向滚动
import win.ui;
/*DSG{{*/
var winform = win.form(text="滚动 static控件 文本示例1";right=455;bottom=95;clipch=1)
winform.add(
static={cls="static";left=48;top=32;right=400;bottom=64;color=0x0000FF;db=1;dl=1;dr=1;dt=1;nWrap=1;transparent=1;z=1}
)
/*}}*/
import color;
var colorBack = color.rgb(255,255,0);
var text = "我是滚动文本"
var sz = ::SIZE();
::Gdi32.GetTextExtentPoint32(::GetDC(winform.hwnd), text, #text/2, sz)
var textW = sz.cx; //计算文本的宽度(像素)
var x = 0;
winform.static.onDrawItem = function(drawItem){
var hdc = drawItem.hDC;
var rc = drawItem.rcItem;
gdi.fillRect(hdc, colorBack, rc)
::DrawText(hdc, text, -1, rc.offset(rc.right+x,0), 0x20|0|4)
x--;
if(x<-(rc.right+textW)) x = 0;
}
winform.static.setInterval(
function(){
winform.static.redraw()
},10
)
winform.static.modifyStyle(,0xD/*_SS_OWNERDRAW*/)
winform.show();
win.loopMessage();
庆大有更新了竖向滚动的例子,也跟着学一下↓
//竖向滚动
import win.ui;
/*DSG{{*/
var winform = win.form(text="滚动 static控件 文本示例2";right=552;bottom=95;clipch=1)
winform.add(
static={cls="static";left=48;top=32;right=511;bottom=64;border=1;clip=1;nWrap=1;transparent=1;z=1}
)
/*}}*/
import color;
var colorBack = color.rgb(255,255,0);
var colorText = color.rgb(255,0,0);
var texts = {"习近平出席新疆维吾尔自治区成立70周年庆祝大会",
"特朗普要求联合国调查“险恶”破坏事件",
"美国迎来一位最特殊客人 世界哭笑不得",
"中欧北极航线刚开通 波兰就后悔了",
"给“第一夫人”送名牌包后 邪教女魔头被抓",
"欧洲开始对美国武器说“不”",
index = 1;
ypos = 0;
}
winform.static.onDrawItem = function(drawItem){
var hdc = drawItem.hDC;
var rc = drawItem.rcItem;
gdi.fillRect(hdc, colorBack, rc)
var next = texts.index+1;
if(next>#texts) next=1;
var font = ::LOGFONT(h=-18; name='微软雅黑';weight=700;underline=0x1);
var hfont = ::CreateFontIndirect(font)
::SelectObject(hdc,hfont)
::SetTextColor(hdc, colorText);
::DrawText(hdc, texts[texts.index], -1, rc.offset(10,texts.ypos), 0x20|0|4)
::DrawText(hdc, texts[next], -1, rc.offset(0,rc.height), 0x20|0|4)
}
winform.static.setInterval(
function(){
texts.ypos--;
if(texts.ypos<-winform.static.height){
texts.ypos=0;
texts.index++;
if(texts.index>#texts) texts.index=1;
win.delay(2000)
}
winform.static.redraw()
},10
)
winform.static.modifyStyle(,0xD/*_SS_OWNERDRAW*/)
winform.show();
win.loopMessage();