打开软件后可以看到所有英文全都超出布局,调整窗口大小和修改显示语言均无效。
查看源码后可见所有控件均没有使用Anchor,全都用了设定好的Location和Size并且不为何还把所有SplitContainer和TabControl设置了Dock导致各BOX大小始终不变
使用dnSpyEx进一步反编译查看Vortex10GUI.dll 初始化时的函数可以发现缩放模式是AutoScaleMode.Font,因为笔者使用的是中文环境,因此WinForms设计器获取到的是宋体9pt,和原本期望的Microsoft Sans Serif 8.25pt差距在0.75pt。
这导致容器放大了但没完全放大,字体横向变宽的比例远远大于容器粗略计算后的大小。
修复方式
1.提前设置字体为Microsoft Sans Serif避免WinForms从当前运行系统里获取字体(我顺手关闭了缩放,实际上可能不需要)
this.Font = new Font("Microsoft Sans Serif", 8.25f); base.AutoScaleMode = AutoScaleMode.None;2.Windows控制面板把改"非 Unicode 程序的语言"为 English (United States) 。但这样可能会导致其他老的中文程序出问题,但不用反编译
3.这里有一个我编译好的dll,如果需要可以下载替换原本的Vortex10GUI.dll请注意备份源文件
Vortex10GUI.dll