章鱼哥出品——VB.NET 屏幕自适应功能的实现

前端之家收集整理的这篇文章主要介绍了章鱼哥出品——VB.NET 屏幕自适应功能的实现前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近有个网友问我屏幕自适应的问题,即如果屏幕的分辨率改变了,窗体也能适应屏幕的大小,不至于有些控件不能显示。其实代码还是很简单的,我不喜欢讲很多的原理啊什么的,直接上代码。所有代码可直接复制测试。方便后来人参考吧

  1. <pre name="code" class="vb">'**********************************************
  2. '作者:章鱼哥,QQ:3107073263 群:309816713
  3. '如有疑问或好的建议请联系我,大家一起进步
  4. '**********************************************
  5.  
  6. Imports System.Windows.Forms
  7. Public Class Form1
  8. Dim Ini_Screen_Width As Integer = 1366 '开发时屏幕宽度
  9. Dim Ini_Screen_Height As Integer = 768 '开发时屏幕高度
  10. Dim Scale_X As Double '屏幕缩放比例
  11. Dim scale_Y As Double '屏幕缩放比例
  12.  
  13. Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load
  14. Dim Screen_Width As Integer = Screen.PrimaryScreen.Bounds.Width '当前屏幕的宽
  15. Dim Screen_Height As Integer = Screen.PrimaryScreen.Bounds.Height '当前屏幕的高
  16.  
  17. '计算当前屏幕与开发时的屏幕的缩放比例
  18. Scale_X = Screen_Width / Ini_Screen_Width
  19. scale_Y = Screen_Height / Ini_Screen_Height
  20.  
  21. ' MsgBox(Screen_Width & "*" & Screen_Height)
  22. '如果缩放比例为1,则不进行下面的操作
  23. If Scale_X = 1 And scale_Y = 1 Then
  24. Exit Sub
  25. End If
  26.  
  27. '更新控件的大小
  28. Resize_Control()
  29. End Sub
  30. Private Sub Resize_Control()
  31. Me.Width = Me.Width * Scale_X
  32. Me.Height = Me.Height * scale_Y
  33.  
  34. For Each cont As Control In Me.Controls
  35. UpdateControl(cont)
  36. Next
  37. End Sub
  38. Private Sub UpdateControl(ByVal Contr As Control)
  39. If Contr.Controls.Count > 0 Then
  40. For Each con As Control In Contr.Controls
  41. UpdateControl(con)
  42. With con
  43. .Width *= Scale_X '宽度
  44. .Height *= scale_Y '高度
  45. .Location = New Point(.Location.X * Scale_X,.Location.Y * scale_Y) '更新位置
  46. .Font = New Font(.Font.Name,.Font.Size * (Scale_X + scale_Y) / 2) '更新字体
  47.  
  48. End With
  49. Next
  50. End If
  51.  
  52. End Sub
  53. End Class

猜你在找的VB相关文章