找回密码
 立即注册

微信登录

只需一步,快速开始

QQ登录

只需一步,快速开始

搜索
查看: 873|回复: 9

[转载] 这两贴不错,自动调节字体和控件参数

[复制链接]
  • TA的每日心情
    无聊
    2024-10-6 23:27
  • 签到天数: 113 天

    连续签到: 1 天

    [LV.6]常住居民II

    35

    主题

    144

    回帖

    1214

    积分

    金牌会员

    积分
    1214
    来自: 中国安徽
    发表于 2024-1-28 13:56:53 | 显示全部楼层 |阅读模式 来自: 中国安徽
    非业余 - 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
    一、字体随窗口大小自动缩放

    [JavaScript] 纯文本查看 复制代码
    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="aardio form";right=759;bottom=469)
    winform.add(
    static={cls="static";text="Static";left=308;top=185;right=518;bottom=354;ah=1;aw=1;font=LOGFONT(h=-32);transparent=1;z=1}
    )
    /*}}*/
    
    var f = winform.static.getFont()
    var h=f.h
    var wh = winform.height
    
    import godking.on
    godking.on(winform).onSize = function(cw,ch,sizeType){
        f.h=ch/wh*h
        winform.static.setFont(f);   
    }
    
    winform.show();
    win.loopMessage();

    非业余 - 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的每日心情
    无聊
    2024-10-6 23:27
  • 签到天数: 113 天

    连续签到: 1 天

    [LV.6]常住居民II

    35

    主题

    144

    回帖

    1214

    积分

    金牌会员

    积分
    1214
    来自: 中国安徽
     楼主| 发表于 2024-1-28 13:58:08 | 显示全部楼层 来自: 中国安徽
    二、根据DPI自动调整控件参数的方法

    [JavaScript] 纯文本查看 复制代码
    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="aardio form";right=759;bottom=469;composited=1)
    winform.add(
    button={cls="button";text="刷新";left=235;top=318;right=515;bottom=380;db=1;dl=1;z=2};
    custom={cls="custom";text="自定义控件";left=17;top=12;right=743;bottom=295;ah=1;aw=1;border=1;db=1;dl=1;dr=1;dt=1;edge=1;z=1}
    )
    /*}}*/
    
    winform.show();
    
    import godking.egrid
    var e = godking.egrid(winform.custom)
    
    // 下面这个函数是计算、调整的关键部分
    var rescale = function(){
        var rowh = 30
        var colw = {90,100,80,60,120}
        var dpi =winform.dpiScaleX
        rowh *= dpi;
        for(i=1;#colw;1) colw *= dpi;
        e.RowHeight=rowh
        e.setColWidth(,colw)
    }
    
    winform.onDpiChanged = function(dpiX,dpiY,rect){
        winform.enableDpiScaling(dpiX/96,dpiY/96)
        rescale()  // 系统dpi改变后自动调整
    }
    
    e.setText(0,1,{"文本型","图片型","选择型","不可编辑列表型"})
    e.setText(1,{1,4},{"第1行第1列","第1行第4列"})
    e.setText(2,,"全部第2行")
    e.setText(3,1,"第3行第1列")
    
    rescale(); // 软件启动,先设置一下
    winform.button.oncommand = function(id,event){
        rescale(); // 随时可以手动刷新
    }
    
    win.loopMessage();


    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-19 17:19
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    2

    主题

    13

    回帖

    368

    积分

    培训会员

    积分
    368
    来自: 中国
    发表于 2024-1-28 15:26:50 | 显示全部楼层 来自: 中国
    二、根据DPI自动调整控件参数的方法
    运行了,报错

    ---------------------------
    aardio:运行时错误
    ---------------------------
    错误行号:#22
    文件:[string "//根据DPI自动调整控件参..."]:
    不支持此操作:perform arithmetic on
    定义类型:variable(local)
    名字:'colw'
    类型:table
    ---------------------------------------------------
    调用栈:
            [string "//根据DPI自动调整控件参..."]:22: in function 'rescale'
            [string "//根据DPI自动调整控件参..."]:37: in main chunk
    ---------------------------
    确定   
    ---------------------------

    ---------------------------
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-28 15:32
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    0

    主题

    3

    回帖

    9

    积分

    新手上路

    积分
    9
    来自: 中国江苏南京
    发表于 2024-1-28 15:34:32 | 显示全部楼层 来自: 中国江苏南京
    很不错哦!!!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-19 19:20
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    2

    主题

    13

    回帖

    73

    积分

    注册会员

    积分
    73
    来自: 中国广西南宁
    发表于 2024-1-28 15:37:33 | 显示全部楼层 来自: 中国广西南宁
    可以 不错
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-10-6 23:27
  • 签到天数: 113 天

    连续签到: 1 天

    [LV.6]常住居民II

    35

    主题

    144

    回帖

    1214

    积分

    金牌会员

    积分
    1214
    来自: 加拿大
     楼主| 发表于 2024-1-28 18:53:39 | 显示全部楼层 来自: 加拿大
    本帖最后由 rmajly 于 2024-1-29 17:42 编辑
    非常业余 发表于 2024-1-28 15:26
    二、根据DPI自动调整控件参数的方法
    运行了,报错

    这一段修改成这样,不报错了
    [JavaScript] 纯文本查看 复制代码
    var rescale = function(){
        var rowh = 30
        var colw = {90,100,80,60,120}
        var dpi =winform.dpiScaleX
        rowh *= dpi;
        for(i=1;#colw;1)
        colw *= dpi;
        e.RowHeight=rowh
        e.setColWidth(,colw)
    }

    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-5-18 17:02
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    0

    主题

    4

    回帖

    25

    积分

    新手上路

    积分
    25
    来自: 中国广西百色
    发表于 2024-1-31 15:15:42 | 显示全部楼层 来自: 中国广西百色
    搞的不错
    回复

    使用道具 举报

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

    连续签到: 1 天

    [LV.5]常住居民I

    1

    主题

    50

    回帖

    409

    积分

    培训会员

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

    使用道具 举报

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

    连续签到: 1 天

    [LV.4]偶尔看看III

    21

    主题

    39

    回帖

    450

    积分

    培训会员

    积分
    450
    来自: 中国重庆
    发表于 2024-2-1 17:42:29 | 显示全部楼层 来自: 中国重庆
    //调试有效果
    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="aardio form";right=759;bottom=469;composited=1)
    winform.add(
    button={cls="button";text="刷新";left=235;top=318;right=515;bottom=380;db=1;dl=1;z=2};
    custom={cls="custom";text="自定义控件";left=17;top=12;right=743;bottom=295;ah=1;aw=1;border=1;db=1;dl=1;dr=1;dt=1;edge=1;z=1}
    )
    /*}}*/

    winform.show();

    import godking.egrid
    var e = godking.egrid(winform.custom)

    // 下面这个函数是计算、调整的关键部分
    var rescale = function(){
        var rowh = 30
        var colw = {90,100,80,60,120}
            //var dpi =winform.dpiScaleX   
        dpi = math.random(1,5)
        rowh *= dpi;
        for(i=1;#colw;1) colw[i] *= dpi;
        e.RowHeight=rowh
        e.setColWidth(,colw)
    }

    winform.onDpiChanged = function(dpiX,dpiY,rect){
        winform.enableDpiScaling(dpiX/96,dpiY/96)
        rescale()  // 系统dpi改变后自动调整
    }

    e.setText(0,1,{"文本型","图片型","选择型","不可编辑列表型"})
    e.setText(1,{1,4},{"第1行第1列","第1行第4列"})
    e.setText(2,,"全部第2行")
    e.setText(3,1,"第3行第1列")

    rescale(); // 软件启动,先设置一下
    winform.button.oncommand = function(id,event){
        rescale(); // 随时可以手动刷新
    }

    win.loopMessage();
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-10-6 23:27
  • 签到天数: 113 天

    连续签到: 1 天

    [LV.6]常住居民II

    35

    主题

    144

    回帖

    1214

    积分

    金牌会员

    积分
    1214
    来自: 加拿大
     楼主| 发表于 2024-2-1 23:47:13 | 显示全部楼层 来自: 加拿大
    善小而为_ 发表于 2024-2-1 17:42
    //调试有效果
    import win.ui;
    /*DSG{{*/

    回复

    使用道具 举报

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

    本版积分规则

    Archiver|手机版|小黑屋|非业余 - aardio 编程语言 - 非官方问答社区 知道创宇云防御

    GMT+8, 2024-11-21 15:22 , Processed in 0.150165 second(s), 28 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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