要模拟的效果如下:

一、纯代码绘图实现,效果如下:

代码如下:

import win.ui;
import gdip;
/*DSG{{*/
var winform = win.form(text="自定义动画演示";right=219;bottom=279)
winform.add(
button={cls="button";text="开始动画";left=50;top=220;right=170;bottom=270;z=2};
plus={cls="plus";left=10;top=10;right=210;bottom=210;z=1}
)
/*}}*/import godking.paint
var p = godking.paint.fromPlus(winform.plus,false/*自动刷新*/,false/*重绘背景*/);
//缓存刻度阴影等固定图像
var path = p.path( 1 /*0 交叉填充 1 全填充*/);
path.addLines({{95,5},{96,40},{100,45},{100,100},{105,100},{108,38},{103,33},{105,5}} /*多点数组*/);
p.fillPath(path,0x88000000/*填充颜色或brush对象*/);
p.fillEllipse(::RECTF(90,83,30,30),0x88000000);
path.addEllipse(90,83,30,30);
p.fillPath(path,0x88000000/*填充颜色或brush对象*/);
p.drawEllipse(::RECT(5,5,195,195),p.brush.lineBrush({0,0} /*起始坐标*/,{200,200}/*结束坐标*/,{0xFFFF6666,0xFFBB0000,0xFFFF0000}/*颜色数组*/,{0,0.7,1}/*位置数组*/,/*包围模式wrapMode*/),10);
var path = p.path(0);
path.addEllipse(10,10,180,180)
path.addEllipse(20,10,190,180)
p.clip.setRectF(0,0,110,200 ,0/*_GdipCombineMode*/)
p.fillPath(path,0xBB000000/*填充颜色或brush对象*/)
p.clip.clear();
for(i=0;359;6){if i%30 p.drawLine(100,40/*y1*/,100/*x2*/,50/*y2*/,0xFF000000,1/*线宽*/);else {p.drawLine(100,40/*y1*/,100/*x2*/,60/*y2*/,0xFF000000,1/*线宽*/);p.drawText(80,10/*y1*/,120/*x2*/,45/*y2*/,tostring(i/6),::LOGFONT(name="arial";h=24;bold=true,color=0xFF000000;brush=null),0,1,1);}p.rotateCenter(6 /*旋转角度*/)
}
p.fillEllipse(::RECTF(85,85,30,30),0xFFBBBBBB);
p.cacheBitmap.load("刻度" /*缓存名*/, p.getImage("*.png",100/*JPG质量*/,/*截取区域RECT或RECTF*/)/*图像*/);
//画表盘
function drawScale(angle){p.clear(0xFFFFFFFF);p.resetTransform();p.rotateCenter(-90 /*旋转角度*/);var path = p.path( 1 /*0 交叉填充 1 全填充*/);path.addPie(38,38,124,124,0,angle);if angle>=3    path.addPie(35,35,130,130,angle-3,3);p.fillPath(path,0xFFFF0000/*填充颜色或brush对象*/);p.resetTransform();p.drawImage(0,/*y1*/0,/*x2*/200,200/*y2*/,p.cacheBitmap.load("刻度" /*缓存名*/, /*图像*/)/*图片*/,/*透明度或图片属性*/,/*保持比例*/)p.plus.update()
}
drawScale(0)
winform.show()
winform.button.oncommand = function(id,event){//开始动画for(i=1;360;1){drawScale(i)win.delay(20)}
}
win.loopMessage();

二、使用图片处理,效果如下:

使用到的图片素材 [ b.png ]:

代码如下:

import win.ui;
import gdip;
/*DSG{{*/
var winform = win.form(text="自定义动画演示";right=219;bottom=279)
winform.add(
button={cls="button";text="开始动画";left=50;top=220;right=170;bottom=270;z=2};
plus={cls="plus";left=10;top=10;right=210;bottom=210;z=1}
)
/*}}*/import godking.paint
var p = godking.paint.fromPlus(winform.plus,false/*自动刷新*/,false/*重绘背景*/);
p.cacheBitmap.load("刻度" /*缓存名*/,"C:\Users\Administrator\Desktop\b.png"/*图像*/);
//画表盘
function drawScale(angle){p.clear(0xFFFFFFFF);p.resetTransform();p.rotateCenter(-90 /*旋转角度*/);var path = p.path( 1 /*0 交叉填充 1 全填充*/);path.addPie(38,38,124,124,0,angle);if angle>=3    path.addPie(35,35,130,130,angle-3,3);p.fillPath(path,0xFFFF0000/*填充颜色或brush对象*/);p.resetTransform();p.drawImage(0,/*y1*/0,/*x2*/200,200/*y2*/,p.cacheBitmap.load("刻度" /*缓存名*/, /*图像*/)/*图片*/,/*透明度或图片属性*/,/*保持比例*/)p.plus.update()
}
drawScale(0)
winform.show()
winform.button.oncommand = function(id,event){//开始动画for(i=1;360;1){drawScale(i)win.delay(20)}
}
win.loopMessage();

三、缓动效果:

代码如下:

import win.ui;
import gdip;
/*DSG{{*/
var winform = win.form(text="自定义动画演示";right=519;bottom=279;bgcolor=16777215)
winform.add(
button={cls="button";text="开始动画";left=190;top=220;right=310;bottom=270;z=2};
plus={cls="plus";left=150;top=10;right=350;bottom=210;z=1}
)
/*}}*/import godking.paint
var p = godking.paint.fromPlus(winform.plus,false/*自动刷新*/,false/*重绘背景*/);
//缓存刻度阴影等固定图像
var path = p.path( 1 /*0 交叉填充 1 全填充*/);
path.addLines({{95,5},{96,40},{100,45},{100,100},{105,100},{108,38},{103,33},{105,5}} /*多点数组*/);
p.fillPath(path,0x88000000/*填充颜色或brush对象*/);
p.fillEllipse(::RECTF(90,83,30,30),0x88000000);
path.addEllipse(90,83,30,30);
p.fillPath(path,0x88000000/*填充颜色或brush对象*/);
p.drawEllipse(::RECT(5,5,195,195),p.brush.lineBrush({0,0} /*起始坐标*/,{200,200}/*结束坐标*/,{0xFFFF6666,0xFFBB0000,0xFFFF0000}/*颜色数组*/,{0,0.7,1}/*位置数组*/,/*包围模式wrapMode*/),10);
var path = p.path(0);
path.addEllipse(10,10,180,180)
path.addEllipse(20,10,190,180)
p.clip.setRectF(0,0,110,200 ,0/*_GdipCombineMode*/)
p.fillPath(path,0xBB000000/*填充颜色或brush对象*/)
p.clip.clear();
for(i=0;359;6){if i%30 p.drawLine(100,40/*y1*/,100/*x2*/,50/*y2*/,0xFF000000,1/*线宽*/);else {p.drawLine(100,40/*y1*/,100/*x2*/,60/*y2*/,0xFF000000,1/*线宽*/);p.drawText(80,10/*y1*/,120/*x2*/,45/*y2*/,tostring(i/6),::LOGFONT(name="arial";h=24;bold=true,color=0xFF000000;brush=null),0,1,1);}p.rotateCenter(6 /*旋转角度*/)
}
p.fillEllipse(::RECTF(85,85,30,30),0xFFBBBBBB);
p.cacheBitmap.load("刻度" /*缓存名*/, p.getImage("*.png",100/*JPG质量*/,/*截取区域RECT或RECTF*/)/*图像*/);
//画表盘
function drawScale(angle){p.clear(0xFFFFFFFF);p.resetTransform();p.rotateCenter(-90 /*旋转角度*/);var path = p.path( 1 /*0 交叉填充 1 全填充*/);path.addPie(38,38,124,124,0,angle);if angle>=3    path.addPie(35,35,130,130,angle-3,3);p.fillPath(path,0xFFFF0000/*填充颜色或brush对象*/);p.resetTransform();p.drawImage(0,/*y1*/0,/*x2*/200,200/*y2*/,p.cacheBitmap.load("刻度" /*缓存名*/, /*图像*/)/*图片*/,/*透明度或图片属性*/,/*保持比例*/)p.plus.update()
}
drawScale(0)
winform.show()
winform.button.oncommand = function(id,event){//开始动画import godking.slowMotionfor(n=1;25;1){drawScale(0)winform.text = n++":"++godking.slowMotion.types[n].name++" ("++godking.slowMotion.types[n].name1++")  "++godking.slowMotion.types[n].memowin.delay(1000)var m = godking.slowMotion(n/*缓动类型*/, true/*按值*/, /*开始值*/, /*结束值*/, /*当前值或进度*/)for(i=0;360;5){drawScale(m(0,360,i))win.delay(10)}  win.delay(1000)}
}
win.loopMessage();

aardio - 用paint库模拟表盘相关推荐

  1. 2022年制冷与空调设备运行操作考试题库模拟考试平台操作

    题库来源:安全生产模拟考试一点通公众号小程序 2022年制冷与空调设备运行操作判断题为制冷与空调设备运行操作练习题模拟预测卷!2022年制冷与空调设备运行操作考试题库模拟考试平台操作依据制冷与空调设备 ...

  2. 2022危险化学品经营单位安全管理人员考试题库模拟考试平台操作

    题库来源:安全生产模拟考试一点通公众号小程序 2022年危险化学品经营单位安全管理人员考试题库系危险化学品经营单位安全管理人员复审题库的新全考试题型!2022危险化学品经营单位安全管理人员考试题库模拟 ...

  3. 2022制冷与空调设备运行操作特种作业证考试题库模拟考试平台操作

    题库来源:安全生产模拟考试一点通公众号小程序 2022制冷与空调设备运行操作考试题模拟考试题库是制冷与空调设备运行操作判断题仿真模拟预测!2022制冷与空调设备运行操作特种作业证考试题库模拟考试平台操 ...

  4. 2022年P气瓶充装考试题模拟考试题库模拟考试平台操作

    题库来源:安全生产模拟考试一点通公众号小程序 2022P气瓶充装复习题为P气瓶充装考试题目新版习题库!2022年P气瓶充装考试题模拟考试题库模拟考试平台操作根据P气瓶充装新考试大纲.P气瓶充装复审模拟 ...

  5. 2022年茶艺师(中级)考试题库模拟考试平台操作

    题库来源:安全生产模拟考试一点通公众号小程序 2022茶艺师(中级)考题为茶艺师(中级)考试题历年真题!2022年茶艺师(中级)考试题库模拟考试平台操作依据茶艺师(中级)考前押题.茶艺师(中级)复审题 ...

  6. 2022茶艺师(中级)国家题库模拟考试平台操作

    题库来源:安全生产模拟考试一点通公众号小程序 2022茶艺师(中级)练习题为茶艺师(中级)考试题库理论知识考试题库!2022茶艺师(中级)国家题库模拟考试平台操作依据茶艺师(中级)考试大纲.茶艺师(中 ...

  7. 利用requests库模拟访问博客来提升文章阅读量

    利用requests库模拟访问博客来提升文章阅读量 一.概述 二.简陋版程序 三.升级版程序 一.概述 有的同学在csdn上写了文章之后,看着自己文章的阅读量,少的可怜,不禁希望能把阅读量快速涨上去, ...

  8. 2022煤矿井下爆破考试题库模拟考试平台操作

    题库来源:安全生产模拟考试一点通公众号小程序 2022煤矿井下爆破复训题库为煤矿井下爆破练习题高频考题覆盖!2022煤矿井下爆破考试题库模拟考试平台操作依据煤矿井下爆破考试教材.煤矿井下爆破全部考试题 ...

  9. 2022危险化学品经营单位安全管理人员特种作业证考试题库模拟考试平台操作

    题库来源:安全生产模拟考试一点通公众号小程序 2022年危险化学品经营单位安全管理人员操作证考试题系危险化学品经营单位安全管理人员国家题库新版习题库!2022危险化学品经营单位安全管理人员特种作业证考 ...

最新文章

  1. 遥控车_vijos1458_纪中1724_水
  2. 恍然大悟之原、反、补
  3. Java中Filter、Servlet、Listener的学习
  4. .NET/C#中对自定义对象集合进行自定义排序的方法
  5. 【原】Mac下统计任意文件夹中代码行数的工具——cloc
  6. php ajax 重复提交,php+ajax远程加载避免重复提交
  7. react把表格渲染好ui_《RSUITE》React企业级UI框架实战评测
  8. zabbix icmp ping 监控主机_Zabbix监控 MySQL 性能
  9. [Ahoi2013]连通图
  10. 【BZOJ4128】Matrix,拔山盖世的矩阵乘法+随机化
  11. 线程的简单理解,适用于初接触的小白,另类例子讲解,通俗易懂
  12. 以锅炉安全为例,台账管理在安全建设中的作用
  13. Spring的AOP中的责任链模式
  14. 二、python小项目模块(制作.npy形式数据集、图像添加随机噪声、将.npy的数据合成图像、创建文件夹)
  15. python find_peaks 源码理解
  16. 服务器系统不用关机,云服务器不用了要关机吗
  17. plantuml样式_PlantUML之活动图
  18. 侧边栏如何展开与收起
  19. Ctrl+shift+k会调出搜狗输入法软键盘,与VSCode行删除快捷键冲突
  20. vxwork任务切换分析

热门文章

  1. 数量遗传学遗传力计算2:半同胞和全同胞
  2. ctfshow web入门-XXE
  3. oracle 调整缓存大小,Oracle调整缓冲区高速缓存
  4. 1小时教你快速搭建蓝鲸CMDB运行平台
  5. Java数据结构之链表(单链表)
  6. 前锋HTML教学视频,足球教学丨给前锋的几点实用建议
  7. python3——matplotlib绘图2
  8. dsoframer打包cab加签名
  9. 我与《深入浅出嵌入式底层软件开发》
  10. amd支持MySQL吗_AMD三核CPU处理器安装不了用友数据库吗?