|
本帖最后由 hua_wuxin 于 2025-2-25 11:25 编辑
如果不考虑自定义的缩放比例的话,似乎不完全匹配时用大一级的就行了。
我在虚拟机里胡乱试了一些分辨率和缩放比例的组合,只发现GetDPI()有124/149/174/199/249这些比预期值小1的情况。
2月25日补:我又想了想,因为楼主有日后支持自定义缩放比例的计划,所以干脆把当前应用中的那个非标准比例加进列表里并重新排序。改动供参考:
local function get_dpiindex_and_dpilist(dpi)
local list = {100, 125, 150, 175, 200, 225, 250, 300}
if (dpi < 100) or (dpi > 300) or (dpi % 25 ~= 0) or ((dpi > 250) and (dpi % 50 ~= 0)) then
table.insert(list, dpi)
end
table.sort(list)
local i = -1
for k, v in pairs(list) do
if v == dpi then
i = k - 1
break
end
end
return i, table.concat(list, '%\n') .. '%'
end
UIPages['Display'].Init = function(self, tab)
--以上省略
dpi_combo.index, dpi_combo.list = get_dpiindex_and_dpilist(Screen:Get('DPI'))
last_dpi = dpi_combo.index
resolution_combo.list = suilib.call('GetResolutionList')
resolution_combo.index = suilib.call('GetCurrentResolution')
--以下省略
end
UI.OnChanged['dpi_combo'] = function(val)
if last_dpi == val then return end
local newdpi = dpi_combo.text
newdpi = string.sub(newdpi, 1, string.len(newdpi) - 1)
Screen:Set('DPI', newdpi)
last_dpi = val
end |
|