找回密码
 立即注册

微信登录

只需一步,快速开始

QQ登录

只需一步,快速开始

搜索
查看: 571|回复: 4

[转载] 用鼠标画线的代码,见证一下aardio的强大

[复制链接]
  • TA的每日心情
    慵懒
    2024-7-6 19:54
  • 签到天数: 106 天

    连续签到: 1 天

    [LV.6]常住居民II

    35

    主题

    136

    回帖

    1136

    积分

    金牌会员

    积分
    1136
    来自: 中国安徽合肥
    发表于 2024-1-30 16:45:29 | 显示全部楼层 |阅读模式 来自: 中国安徽合肥
    非业余 - aardio 编程语言 - 非官方问答社区
    限时85折!暑假期间,用aardio培训班充实自己!https://mp.weixin.qq.com/s/c4Z8sZPOiMh_OTG2VPOJmA
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    本帖最后由 rmajly 于 2024-1-30 16:47 编辑


    点击鼠标 画折线图。点击的过程中,移动鼠标指针时还能显示线条。

    [AAuto] 纯文本查看 复制代码
    import win.ui;
    /*DSG{{*/
    winform = ..win.form(text="绘图演示";right=599;bottom=399;bgcolor=16777215)
    winform.add(
    plus={cls="plus";left=8;top=9;right=590;bottom=393;bgcolor=15793151;notify=1;z=1}
    )
    /*}}*/
    
    import gdip.pen; 
    winform.plus.points ={}
    winform.plus.onDrawContent = function(graphics,rc){
        var pen = winform.plus.pen;
        if(pen){
            
            if( #winform.plus.points >=2 ) {
                var pt,pt2;
                for(i=1;#winform.plus.points-1;1){
                    var pt,pt2 = winform.plus.points[i],winform.plus.points[i+1] 
                     graphics.drawLine(pen,pt.x,pt.y,pt2.x,pt2.y)
                }
            }
            
            var pt = winform.plus.points[#winform.plus.points]
            if( pt && winform.plus.x2 && winform.plus.y2 ){
                graphics.drawLine(pen,pt.x,pt.y,winform.plus.x2,winform.plus.y2 )
            }
        }
    }
    
    winform.plus.onMouseClick = function(wParam,lParam){
        if( !winform.plus.pen )
            winform.plus.pen = gdip.pen(0xFFFFFF00,2);
            
        var x,y  = win.getMessagePos(lParam);
        table.push(winform.plus.points,{x=x;y=y} );
        winform.plus.redrawTransparent()
    }
    
    winform.plus.onMouseMove = function(wParam,lParam){
        winform.plus.x2,winform.plus.y2 = win.getMessagePos(lParam); 
        winform.plus.redrawTransparent() 
    }
    
    winform.show()
    win.loopMessage();

    注意:
    把plus控件的浮动透明属性设为false,利用plus控件提供的背景优化,可以避免绘图的时候闪烁
    转自https://bbs.aardio.com/forum.php ... =%E9%BC%A0%E6%A0%87
    非业余 - aardio 编程语言 - 非官方问答社区
    限时85折!暑假期间,用aardio培训班充实自己!https://mp.weixin.qq.com/s/c4Z8sZPOiMh_OTG2VPOJmA
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    回复

    使用道具 举报

  • TA的每日心情
    难过
    1 小时前
  • 签到天数: 35 天

    连续签到: 1 天

    [LV.5]常住居民I

    1

    主题

    47

    回帖

    370

    积分

    培训会员

    积分
    370
    来自: 中国广西柳州
    发表于 2024-1-31 16:28:24 | 显示全部楼层 来自: 中国广西柳州
    谢谢分享。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-3-20 10:26
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    20

    主题

    39

    回帖

    441

    积分

    培训会员

    积分
    441
    来自: 中国重庆
    发表于 2024-2-1 17:22:15 | 显示全部楼层 来自: 中国重庆
    本帖最后由 善小而为_ 于 2024-3-8 21:04 编辑

    [AAuto] 纯文本查看 复制代码
    //加点注释
    import gdip.pen;
    winform.plus.pen = gdip.pen(0xFFFF0000,2); //画笔
    var pen = winform.plus.pen; //画笔
    winform.plus.points ={}; //点击坐标历史
    winform.plus.onDrawContent = function(graphics,rc){
    
            //历史坐标重画
            if( #winform.plus.points >=2 ) {
                var pt,pt2;
                for(i=1;#winform.plus.points-1;1){
                    var pt,pt2 = winform.plus.points,winform.plus.points[i+1]
                     graphics.drawLine(pen,pt.x,pt.y,pt2.x,pt2.y)
                }
            }
           
            //当前鼠标移动坐标绘图
            var pt = winform.plus.points[#winform.plus.points]
            if( pt && winform.plus.x2 && winform.plus.y2 ){
                graphics.drawLine(pen,pt.x,pt.y,winform.plus.x2,winform.plus.y2 )
            }
    
    }
    
    //鼠标点击保存坐标
    winform.plus.onMouseClick = function(wParam,lParam){
        var x,y  = win.getMessagePos(lParam);
        table.push(winform.plus.points,{x=x;y=y} );
        winform.plus.redrawTransparent()
    }
    
    //当前鼠标移动坐标
    winform.plus.onMouseMove = function(wParam,lParam){
        winform.plus.x2,winform.plus.y2 = win.getMessagePos(lParam);
        winform.plus.redrawTransparent()
    }

    点评

    代码应该放代码框内  发表于 2024-2-7 12:22
    谢谢了!  发表于 2024-2-1 23:45
    回复

    使用道具 举报

    *滑块验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|非业余 - aardio 编程语言 - 非官方问答社区

    GMT+8, 2024-7-16 10:16 , Processed in 0.174195 second(s), 31 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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