原理:
1、根据dpiScaleX或dpiScaleY的值,计算出缩放比例。
2、在 winform.onDpiChanged 事件里,根据缩放比例,对需要调整的组件参数进行设置。
3、关键方法:winform.enableDpiScaling
示例代码:
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[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();
|