以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助 窗口Font.Size随窗口同时放缩  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=103126)

--  作者:jackyfashion
--  发布时间:2017/6/30 22:02:00
--  求助 窗口Font.Size随窗口同时放缩
老师:
您好!
以下代码
For Each c As Winform.Control In e.Form.Controls
    c.Left = c.Left * (e.Form.Width / vars("width"))
    c.Top = c.Top * (e.Form.Height / vars("height"))
    c.Width = c.Width * (e.Form.Width / vars("width"))
    c.Height = c.Height * (e.Form.Height / vars("height"))    
Next
vars("width") = e.Form.width
vars("height") = e.Form.height
什么代码可以字体随窗口放缩?
请老师指教!!!
谢谢!

--  作者:jackyfashion
--  发布时间:2017/6/30 22:29:00
--  

[此贴子已经被作者于2017/6/30 22:35:05编辑过]

--  作者:有点蓝
--  发布时间:2017/6/30 22:46:00
--  
不建议使用这个用法改字体,麻烦而不切实际
--  作者:jackyfashion
--  发布时间:2017/6/30 23:16:00
--  
老师:
不是改字体,是随窗口大小改动?
控件随窗口扩大了,字体还是那么小,很不配,难看,请老师指教!!!
谢谢!
[此贴子已经被作者于2017/6/30 23:17:18编辑过]

--  作者:有点蓝
--  发布时间:2017/7/1 10:47:00
--  
做不了的。字体是一维的,只能整体设置大小,不能只设置高度或者宽度。但是窗口是可以设置其中一种的,所以没有办法协调。非常容易失真

If e.Form.Width > 0 AndAlso e.Form.Height  > 0 Then
    e.Form.StopRedraw
    For Each c As Winform.Control In e.Form.Controls
        c.Left = c.Left * (e.Form.Width / vars("width"))
        c.Top = c.Top * (e.Form.Height / vars("height"))
        c.Width = c.Width * (e.Form.Width / vars("width"))
        c.Height = c.Height * (e.Form.Height / vars("height"))
        Dim s As Double = val(c.Font.Size)
        Dim fnt As Font = new Font(c.Font.Name,s * e.Form.Width / vars("width"))
        c.Font = fnt
    Next
    \'msgbox(e.Form.Height / vars("height"))
    vars("width") = e.Form.width
    vars("height") = e.Form.height
    e.Form.ResumeRedraw
End If

--  作者:jackyfashion
--  发布时间:2017/7/1 21:32:00
--  
谢谢老师!!!