找回密码
 立即注册

微信登录

只需一步,快速开始

QQ登录

只需一步,快速开始

搜索
查看: 1233|回复: 4

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

[复制链接]
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 116 天

    连续签到: 1 天

    [LV.6]常住居民II

    35

    主题

    147

    回帖

    1253

    积分

    钻石会员

    积分
    1253
    来自: 中国安徽合肥
    发表于 2024-1-30 16:45:29 | 显示全部楼层 |阅读模式 来自: 中国安徽合肥
    非业余 - aardio 编程语言 - 非官方问答社区
    风行者三期培训:Aardio+Python+Flutter,1000集课程让你成为全栈开发高手!https://mp.weixin.qq.com/s/_WOoHFtITUyLk2k7BXYGkg
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    aardio风行者第三期培训班https://mp.weixin.qq.com/s/cdZcvFiAWhlYTaSrQGCPvA
    本帖最后由 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 编程语言 - 非官方问答社区
    风行者三期培训:Aardio+Python+Flutter,1000集课程让你成为全栈开发高手!https://mp.weixin.qq.com/s/_WOoHFtITUyLk2k7BXYGkg
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    aardio风行者第三期培训班https://mp.weixin.qq.com/s/cdZcvFiAWhlYTaSrQGCPvA
    回复

    使用道具 举报

  • TA的每日心情
    难过
    2024-8-19 08:31
  • 签到天数: 38 天

    连续签到: 1 天

    [LV.5]常住居民I

    1

    主题

    51

    回帖

    437

    积分

    3期培训会员

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

    使用道具 举报

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

    连续签到: 1 天

    [LV.4]偶尔看看III

    21

    主题

    39

    回帖

    450

    积分

    2期培训会员

    积分
    450
    来自: 中国重庆
    发表于 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, 2025-2-22 00:01 , Processed in 0.112710 second(s), 31 queries .

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

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