国产高清在线免费观看-国产高清在线免费无码-国产高清在线男人的天堂-国产高清在线视频-国产高清在线视频精品视频-国产高清在线视频伊甸园

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

DPI更改后,界面錯亂了,大家幫幫忙

admin
2014年1月8日 0:0 本文熱度 6326
DPI原來是96,改成100后程序界面背景圖片和按鈕控件錯位了,怎么辦才能保證背景圖片和按鈕在固定位置,不受DPI的影響,或者DPI更改后,控件位置不出現錯亂呢

 

 

本程序解決使用VB生成應用程序后,在高DPI下,特別是在WIN7下高DPI導致界面錯位,錯亂的問題。

思路:
1.獲得系統DPI值
2.計算得程序中所有窗體的高度和寬度像素值
3.設定所有控件隨著窗體變化而縮放
4.在標準96DPI下打開VB設置DPI縮放公式用來獲得不同DPI的實際緹數

示例代碼:【FORM1,COMMAND1,IMAGE 控件】
'96 DPI 下 TwipsPerPixelX TwipsPerPixelY 為 15 --- 即DPI為96時,15緹等于1像素
'120 DPI 下 TwipsPerPixelX TwipsPerPixelY 為 12 --- 即DPI為120時,12緹等于1像素
'這么看來 每高 1 DPI 就+8
'------------
'這個窗體高度是[在96DPI下測得]:2145緹[143像素,Y] 寬度是:8715緹[581像素,X]
'在這提供一個公式:1 像素 = 1440 TPI / 96 DPI = 15 緹
'所以X像素=1440/DPI值=Y緹;
'####################################################################################################################################
Option Explicit
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Const LOGPIXELSX = 88 ' Logical pixels/inch in X

Private FormOldWidth As Long
'保存窗體的原始寬度
Private FormOldHeight As Long
'保存窗體的原始高度

'在調用ResizeForm前先調用本函數
Public Sub ResizeInit(FormName As Form)
Dim Obj As Control
FormOldWidth = FormName.ScaleWidth
FormOldHeight = FormName.ScaleHeight
On Error Resume Next
For Each Obj In FormName
Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
Next Obj
On Error GoTo 0
End Sub

'按比例改變表單內各元件的大小,
'在調用ReSizeForm前先調用ReSizeInit函數
Public Sub ResizeForm(FormName As Form)
Dim Pos(4) As Double
Dim i As Long, TempPos As Long, StartPos As Long
Dim Obj As Control
Dim ScaleX As Double, ScaleY As Double

ScaleX = FormName.ScaleWidth / FormOldWidth
'保存窗體寬度縮放比例
ScaleY = FormName.ScaleHeight / FormOldHeight
'保存窗體高度縮放比例
On Error Resume Next
For Each Obj In FormName
StartPos = 1
For i = 0 To 4
'讀取控件的原始位置與大小

TempPos = InStr(StartPos, Obj.Tag, " ", vbTextCompare)
If TempPos > 0 Then
Pos(i) = Mid(Obj.Tag, StartPos, TempPos - StartPos)
StartPos = TempPos + 1
Else
Pos(i) = 0
End If
'根據控件的原始位置及窗體改變大小
'的比例對控件重新定位與改變大小
Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
Next i
Next Obj
On Error GoTo 0
End Sub

Private Sub Form_Activate()
Dim aa As Long
Dim hdc0 As Long
hdc0 = GetDC(0)
aa = GetDeviceCaps(hdc0, LOGPIXELSX) '獲得DPI值
Dim x As Integer
x = 1440 / aa 'X緹=1像素
Me.Height = 143 * x
Me.Width = 581 * x
Image1.Height = 114 * x
Image1.Width = 581 * x

End Sub

Private Sub Form_Load()
Call ResizeInit(Me) '在程序裝入時必須加入
End Sub

Private Sub Form_Resize()
Call ResizeForm(Me) '確保窗體改變時控件隨之改變
End Sub

源程序包【示例代碼】下載地址:http://www.thfyhome.com/DPI.rar

該文章在 2014/1/8 0:00:15 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 亚洲国产精品一区第二页 | 亚洲av永久无码精品水牛影视 | 午夜无码久久久久蜜臀av | 综合伊人久久在一二三区 | 国产成人精品视频一区二区不卡 | 亚洲中久无码永久在线观看同 | 亚洲国产99在线精品一区二区 | 亚洲中文字幕在线资源第1页 | 日本成熟少妇高潮A片 | 国产毛片女人高潮叫声 | 亚洲欧洲国产韩国va在线 | 色欲av亚洲一区无码少妇 | 国产丝袜在线播放 | 国产午夜男女爽爽爽爽爽视频 | 无码人妻一区二区三区密桃手 | 日韩av色综合网站 | 日韩精品成人无码专区免费 | 精品丝袜国产在线播放 | 在线观看在线播放一区二区三区 | 日本少妇人妻xxxxx18 | 2025国产福利在线观看 | 亚洲欧美洲成人一区二区 | 无码一区二区三区免费视频翁 | 日韩少妇内射免费播放 | 我想看黄色毛片 | 日本无码黄人妻一区二区 | 国产日本卡二卡三卡四卡 | 艳妇乳肉豪妇荡乳av无码福利 | 亚洲岛国v无码无遮挡在 | 国产精品麻豆视频网站 | 制服师生一区二区三区在线 | 无码国产精品亚洲а∨天堂dvd | 日日噜噜夜夜狠狠视频 | 精品亚洲成a人在线观看青青 | 国产av无码专区亚洲av软件 | 91尤物无码不卡在线 | 日韩成全视频观看免费观看高清 | 最新无码专区视频在线 | 中文无码乱人伦中文视频播放 | 三级网站视频在线观看 | 国产在线视欧美亚综合 |