aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 29239|回复: 2

分享个gif录制助手源代码

[复制链接]

38

主题

129

回帖

1045

积分

荣誉会员

积分
1045
发表于 2018-5-8 00:00:38 | 显示全部楼层 |阅读模式
如题:
就是咱们论坛【开发工具箱】那个板块里面的那个。
这个大概是去年刚学aar的时候写的,一直也没更新过了,之前还发布到各大软件平台了。
现在源码奉上。希望对新人有点帮助吧

工程下载:
链接:https://pan.baidu.com/s/1B0cWiEnLxYPDvrGpe59g6A 密码:tqis

TIM图片20180507235344.png

主要代码如下:
main.aardio文件里:
  1. import win.ui;
  2. import gdip.fontAwesome;
  3. /*DSG{{*/
  4. mainForm = win.form(text="aardio form";right=692;bottom=400;bgcolor=8421376;border="none";clipch=1)
  5. mainForm.add(
  6. logo={cls="plus";text='\uF2A9';left=627;top=0;right=673;bottom=44;color=33023;dr=1;dt=1;font=LOGFONT(name='FontAwesome';h=-35;weight=700);transparent=1;z=9};
  7. logo2={cls="plus";text="GIF录制助手";left=603;top=40;right=693;bottom=63;color=33023;dr=1;dt=1;font=LOGFONT(name='微软雅黑';h=-14;weight=700);transparent=1;z=8};
  8. picturebox={cls="picturebox";left=2;top=2;right=601;bottom=399;bgcolor=0;db=1;dl=1;dr=1;dt=1;z=1};
  9. 停止={cls="plus";text='\uF04D  停止';left=601;top=245;right=693;bottom=288;bgcolor=3768320;border={color=-16777216;width=1};color=16777215;db=1;dr=1;font=LOGFONT(name='FontAwesome';h=-16);transparent=1;z=5};
  10. 关于={cls="plus";text='\uF05A  关于';left=601;top=371;right=693;bottom=401;bgcolor=3768320;border={color=-16777216;width=1};color=16777215;db=1;dr=1;font=LOGFONT(name='FontAwesome';h=-16);notify=1;transparent=1;z=10};
  11. 关闭={cls="plus";text='\uF011  关闭';left=601;top=329;right=693;bottom=372;bgcolor=3768320;border={color=-16777216;width=1};color=16777215;db=1;dr=1;font=LOGFONT(name='FontAwesome';h=-16);notify=1;transparent=1;z=11};
  12. 开启={cls="plus";text='\uF1C8  开启';left=601;top=120;right=693;bottom=163;bgcolor=20608;border={color=-16777216;width=1};color=16777215;db=1;dr=1;font=LOGFONT(name='FontAwesome';h=-16);transparent=1;z=2};
  13. 新建={cls="plus";text='\uF0C7  新建';left=601;top=78;right=693;bottom=121;bgcolor=3768320;border={color=-16777216;width=1};color=16777215;db=1;dr=1;font=LOGFONT(name='FontAwesome';h=-16);transparent=1;z=6};
  14. 暂停={cls="plus";text='\uF04C  暂停';left=601;top=162;right=693;bottom=205;bgcolor=3768320;border={color=-16777216;width=1};color=16777215;db=1;dr=1;font=LOGFONT(name='FontAwesome';h=-16);transparent=1;z=3};
  15. 查看={cls="plus";text='\uF07C';left=646;top=287;right=693;bottom=330;bgcolor=3768320;border={color=-16777216;width=1};color=16777215;db=1;dr=1;font=LOGFONT(name='FontAwesome';h=-16);notify=1;transparent=1;z=7};
  16. 继续={cls="plus";text='\uF04B  继续';left=601;top=204;right=693;bottom=246;bgcolor=3768320;border={color=-16777216;width=1};color=16777215;db=1;dr=1;font=LOGFONT(name='FontAwesome';h=-16);transparent=1;z=4};
  17. 预览={cls="plus";text='\uF06E';left=601;top=287;right=648;bottom=330;bgcolor=3768320;border={color=-16777216;width=1};color=16777215;db=1;dr=1;font=LOGFONT(name='FontAwesome';h=-19);notify=1;transparent=1;z=12}
  18. )
  19. /*}}*/

  20. /*皮肤代码{{*/
  21. namespace theme{
  22.         list = {
  23.                 color = {
  24.                     hover = 0xFFFF8080; //鼠标放上去时悬停的状况
  25.                     active = 0xFFFF8080; //鼠标点击时
  26.                     disable = 0xFF008080;
  27.                 }
  28.             }
  29. }
  30. mainForm.新建.skin( theme.list );
  31. mainForm.停止.skin( theme.list );
  32. mainForm.关于.skin( theme.list );
  33. mainForm.查看.skin( theme.list );
  34. mainForm.关闭.skin( theme.list );
  35. mainForm.开启.skin( theme.list );
  36. mainForm.暂停.skin( theme.list );
  37. mainForm.预览.skin( theme.list );
  38. /*
  39. mainForm.水印.skin( theme.list );
  40. */
  41. mainForm.继续.skin( theme.list );

  42. mainForm.查看.disabled = true;
  43. mainForm.停止.disabled = true;
  44. mainForm.开启.disabled = true;
  45. mainForm.暂停.disabled = true;
  46. mainForm.继续.disabled = true;
  47. mainForm.预览.disabled = true;
  48. /*}}*/

  49. var gifThr , gifPath;
  50. mainForm.关于.oncommand = function(id,event){
  51.         import process;
  52.         process.execute("http://www.htmlayout.cn/t/16");//打开网页
  53. }

  54. import fsys.dlg;
  55. mainForm.新建.oncommand = function(id,event){
  56.         gifPath = fsys.dlg.save("*.gif|*.gif",,,mainForm.hwnd,,"gifTest.gif");//获取路径
  57.         if(gifPath){
  58.                 var ret = string.save(gifPath,"");//保存
  59.              if(ret){
  60.                              thread.set("PicLantch",gifPath )
  61.                      //mainForm.msgbox("保存成功!")
  62.                     mainForm.停止.disabled = true;
  63.                                 mainForm.开启.disabled = false;
  64.                                 mainForm.暂停.disabled = true;
  65.                                 mainForm.继续.disabled = true;
  66.             
  67.              }else {
  68.                      mainForm.msgbox("新建失败!")
  69.              }       
  70.         }
  71. }
  72. mainForm.开启.oncommand = function(id,event){
  73.         thread.set("startOrend",true);
  74.    
  75.     gifThr = thread.create(
  76.         function( mainForm,caphwnd,gifPath ){
  77.             import soImage;
  78.             import win.ui ;
  79.             import com;
  80.             var img = soImage();
  81.             var gifFile = soImage.gifFile(gifPath);
  82.             while(thread.get("startOrend")){
  83.                 var x,y,cx,cy = mainForm.picturebox.getPos();//坐标 x , y  宽 高
  84.                 var xx,yy = win.toScreen(mainForm.hwnd,x,y);
  85.                 var pic = com.picture.snap(caphwnd,xx,yy,cx,cy);
  86.                 img.fromBitmap(pic.Handle);
  87.                 gifFile.write(img,false,,,3); //写入GIF文件
  88.                sleep(50);//50HZ
  89.             }
  90.             gifFile.close();//释放录制
  91.            // console.log("录制完毕")
  92.         },mainForm,win.getDesktop(),gifPath
  93.     )
  94.     owner.disabled = true;
  95.     mainForm.停止.disabled = false;
  96.         mainForm.暂停.disabled = false;
  97.         mainForm.继续.disabled = true;
  98. }
  99. mainForm.暂停.oncommand = function(id,event){
  100.         thread.suspend( gifThr );
  101.         owner.disabled = true;
  102.         mainForm.停止.disabled = false;
  103.         mainForm.继续.disabled = false;
  104. }
  105. mainForm.继续.oncommand = function(id,event){
  106.         thread.resume( gifThr );
  107.         owner.disabled = true;
  108.         mainForm.停止.disabled = false;
  109.         mainForm.暂停.disabled = false;
  110. }
  111. mainForm.停止.oncommand = function(id,event){
  112.         thread.set("startOrend",false);
  113.         thread.wait(gifThr,50);
  114.         raw.closehandle(gifThr);
  115.         owner.disabled = true;
  116.         mainForm.开启.disabled = false;
  117.         mainForm.暂停.disabled = true;
  118.         mainForm.继续.disabled = true;
  119.         mainForm.查看.disabled = false;
  120.         mainForm.预览.disabled = false;
  121. }
  122. mainForm.查看.oncommand = function(id,event){
  123.         import process;
  124.         if(gifPath){
  125.                 mulupath = io.splitpath(gifPath);
  126.                 process.explore(mulupath.dir);
  127.         }
  128. }
  129. mainForm.预览.oncommand = function(id,event){
  130.         if(gifPath){
  131.                 mainForm.loadForm("\res\chakan.aardio");
  132.         }
  133. }

  134. mainForm.关闭.oncommand = function(id,event){
  135.         if(gifThr){
  136.                 thread.set("startOrend",false);
  137.                 thread.wait(gifThr,50);
  138.                 raw.closehandle(gifThr);       
  139.         }
  140.         mainForm.close();
  141. }
  142. mainForm.wndproc = function(hwnd,message,wParam,lParam){
  143.         select( message ) {
  144.                 case 0x201/*_WM_LBUTTONDOWN*/{
  145.                         mainForm.hitCaption();
  146.                         }
  147.         }
  148. }


  149. mainForm.transparent(0x808000,0)
  150. win.setTopmost(mainForm.hwnd);
  151. import win.ui.shadow;
  152. win.ui.shadow(mainForm,,5);
  153. //下面的代码为窗体添加可拖动改变大小的边框
  154. import win.ui.resizeBorder;
  155. win.ui.resizeBorder( mainForm );

  156. import win.ui.minmax;
  157. win.ui.minmax(mainForm,120,380)

  158. mainForm.enableDpiScaling();
  159. mainForm.show();

  160. return win.loopMessage();
复制代码

引用的chakan.aardio文件里:
这个文件里的代码引用了论坛里
仿Picasa照片查看器效果 http://bbs.aardio.com/forum.php? ... mp;highlight=%B7%C2
神码 和 多多洛 提供的代码
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="GIF录制助手预览器";right=0;bottom=0;exmode="toolwindow")
  4. winform.add()
  5. /*}}*/

  6. winform.transparent(true);//启用分层窗口以支持透明
  7. winform.fullscreen(true);//全屏

  8. import web.layout;//导入内置浏览器引擎
  9. import web.layout.behavior.windowCommand;//导入标题栏按钮支持库
  10. wbLayout = web.layout(winform); //创建浏览器

  11. wbLayout.html = /**
  12. <!DOCTYPE html>
  13. <html>
  14. <body>
  15.         <div id="hl_ctrl_bar"><span id="close" command="window-close" title="关闭">r</span></div>
  16.         <img id="simulate_area"></img>
  17. </body>
  18. </html>
  19. **/

  20. wbLayout.css = /**
  21. html { background: none; } /* HTML背景透明 */
  22. body, html { margin:0; padding:0; height:100%; width:100% }
  23. body { margin:0; outline: none; background-color:rgba(0,0,0,0.7); }

  24. /* 窗体控制按钮 */
  25. #hl_ctrl_bar { max-width: max-intrinsic; padding-right: 5px; position: absolute; right:0; top:0; padding: 0; }
  26. #hl_ctrl_bar span {
  27.         display: block; float: left; color: #fff; line-height: 22px; padding: 0 5px;
  28.         font-family: Webdings; font-weight: bold; font-size: 13px;
  29.         behavior: windowCommand; /* 添加标题栏按钮交互行为 */
  30. }
  31. #hl_ctrl_bar #close {
  32.         width: 40px; height: 40px; padding:0; overflow: hidden;line-height: 28px;
  33.         text-indent: 16px; font-size: 14px;background-color:#666; border-radius:0 0 0 100%;
  34. }
  35. /*提示框样式,解决右上角提示乱码问题*/
  36. popup {
  37.     font-family: '微软雅黑','宋体';
  38.     font-size: 12px;
  39.     font-weight: normal;
  40.     padding: 0 5px;
  41. }
  42. #hl_ctrl_bar span#close:hover { background-color: #da3610; }
  43.   
  44. #simulate_area[ready]{  
  45.         background:#000;/* 设背景色后发光效果性能会好点 */
  46.         outline:15px glow #000 0px;
  47.         width:0; height:0;
  48.          
  49. }

  50. /* 图像已下载完成 */
  51. #simulate_area[src]:not(:incomplete){   

  52.         top: 50%%; left: 50%%; right: 50%%; bottom: 50%%;
  53.         position: absolute;   
  54.          
  55.         /*初始化事件*/
  56.         assigned!:
  57.                 self.start-animation( 0.9s ); /*启动动画*/
  58.    
  59.     /*动画事件*/
  60.     animation-step!:
  61.         self::width = morph("cubic-in-out", 1px, self.min-intrinsic-width()),
  62.         self::height = morph("cubic-in-out", 1px, self.min-intrinsic-height() );
  63.          
  64.      animation-end!:
  65.              self.ready = "true"; /* 动画完了再显示发光效果 */
  66. }
  67. **/

  68. winform.updateImage = function(url){
  69.         var ltEle = wbLayout.queryEle('#simulate_area'); //CSS选择器获取节点对象
  70.         ltEle.src = url;//动态修改图像        
  71. }

  72. //预览指定图像
  73. winform.updateImage( thread.get("PicLantch") );

  74. winform.show();
  75. win.loopMessage();
复制代码

6

主题

86

回帖

794

积分

三级会员

积分
794
发表于 2018-5-8 20:22:46 | 显示全部楼层
早起的鸟儿有虫子吃。
先来的人儿有代码收。
谢谢分享。

15

主题

21

回帖

447

积分

二级会员

积分
447
发表于 2018-5-8 22:49:57 | 显示全部楼层
谢谢分享。谢谢分享。谢谢分享。谢谢分享。谢谢分享。谢谢分享。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2024-10-4 19:04 , Processed in 0.072393 second(s), 25 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表