aardio - 时钟例程

例程1:围中心旋转 

代码比较简单,主要演示实现方法,没有过多优化。

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=582;bottom=531)
winform.add(
plus={cls="plus";left=37;top=17;right=537;bottom=517;z=1}
)
/*}}*/

import godking.paint
var p = godking.paint(winform.plus.width,winform.plus.height,,"/beijing.png")
p.bindPlus(winform.plus,false)
var f = function(){
		var t=time()
		p.clear()
		//画时针
		var a = t.hour*30+30*(t.minute*60+t.second)/3600
		p.rotateCenter(a)
		p.drawImageF(0,0,p.width/*宽度*/,p.height/*高度*/,"/shi.png"/*图片*/)
		p.rotateCenter(-a)
		//画分针
		a = 360*(t.minute*60+t.second)/3600
		p.rotateCenter(a)
		p.drawImageF(0,0,p.width/*宽度*/,p.height/*高度*/,"/fen.png"/*图片*/)
		p.rotateCenter(-a)		
		//画秒针
		a = 360*t.second/60
		p.rotateCenter(a)
		p.drawImageF(0,0,p.width/*宽度*/,p.height/*高度*/,"/miao.png"/*图片*/)
		p.rotateCenter(-a)
		//刷新
		p.updatePlus()
	}
f();
winform.setInterval( f,1000 )
winform.show();
win.loopMessage();

例程2:围指定点旋转

请使用最新版paint库,以便更好的支持以下代码。 

方法1:

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=582;bottom=531)
winform.add(
plus={cls="plus";left=37;top=17;right=537;bottom=517;z=1}
)
/*}}*/

import godking.paint
var p = godking.paint(winform.plus.width,winform.plus.height,,"/beijing1.png")
p.bindPlus(winform.plus,false)
var rect = ::RECT(242-80,331-80,242+80,331+80)
var f = function(){
		var t=time()
		p.clear()
		//画时针
		var a = t.hour*30+30*(t.minute*60+t.second)/3600
		p.rotateRect(rect,a)
		p.drawImage(rect,"/shi.png"/*图片*/)
		p.rotateRect(rect,-a) //此处恢复画板角度,建议用:p.resetTransform()
		//画分针
		a = 360*(t.minute*60+t.second)/3600
		p.rotateRect(rect,a)
		p.drawImage(rect,"/fen.png"/*图片*/)
		p.rotateRect(rect,-a) //此处恢复画板角度,建议用:p.resetTransform()
		//画秒针
		a = 360*t.second/60
		p.rotateRect(rect,a)
		p.drawImage(rect,"/miao.png"/*图片*/)
		p.rotateRect(rect,-a) //此处恢复画板角度,建议用:p.resetTransform()
		//刷新
		p.updatePlus()
	}
f();
winform.setInterval( f,1000 )
winform.show();
win.loopMessage();

方法2:

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=582;bottom=531)
winform.add(
plus={cls="plus";left=37;top=17;right=537;bottom=517;z=1}
)
/*}}*/
import godking.paint
var p = godking.paint.fromPlus(winform.plus,false/*自动刷新plus*/)
	p.bkimg="/beijing1.png"
var rect = ::RECT(242-80,331-80,242+80,331+80)
var f = function(){
		var t=time()
		p.clear()
		//画时针
		p.rotateRect(rect,t.hour*30+30*(t.minute*60+t.second)/3600)
		p.drawImage(rect,"/shi.png"/*图片*/)
		p.resetTransform()
		//画分针
		p.rotateRect(rect,360*(t.minute*60+t.second)/3600)
		p.drawImage(rect,"/fen.png"/*图片*/)
		p.resetTransform()
		//画秒针
		p.rotateRect(rect,360*t.second/60)
		p.drawImage(rect,"/miao.png"/*图片*/)
		p.resetTransform()
		//刷新
		p.updatePlus()
	}
f();
winform.setInterval( f,1000 )
winform.show();
win.loopMessage();

方法3:

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=582;bottom=531)
winform.add(
plus={cls="plus";left=37;top=17;right=537;bottom=517;z=1}
)
/*}}*/

import godking.paint
var p = godking.paint.fromPlus(winform.plus,false/*自动刷新plus*/)
	p.bkimg="/beijing1.png"
var x,y,d = 242,331,160; //表盘中心点x,表盘中心点y,表盘直径(宽度、高度)
var f = function(){
		var t=time()
		p.clear()
		//画时针
		p.rotatePoint(x,y,t.hour*30+30*(t.minute*60+t.second)/3600/*旋转角度*/);
		p.drawImageCenter(x,y,d,d,"/shi.png"/*图片*/);
		p.resetTransform()
		//画分针
		p.rotatePoint(x,y,360*(t.minute*60+t.second)/3600/*旋转角度*/);
		p.drawImageCenter(x,y,d,d,"/fen.png"/*图片*/);
		p.resetTransform()
		//画秒针
		p.rotatePoint(x,y,360*t.second/60/*旋转角度*/);
		p.drawImageCenter(x,y,d,d,"/miao.png"/*图片*/);
		p.resetTransform()
		//刷新
		p.updatePlus()
	}
f();
winform.setInterval( f,1000 )
winform.show();
win.loopMessage();

源代码及相关素材打包下载:

https://wwb.lanzouf.com/iTP660416vfi

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

卢光庆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值