文章編號: 94927 - 上次校閱: 2007年1月18日 - 版次: 2.3

ACC: 如何轉換為像素 (以一點的十二分之一為單位)

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

進階: 須具備專家編碼、 的互通性與多重使用者技巧。

因為 Microsoft Access 儲存維度] 和 [位置] 屬性 (以一點的十二分之一為單位),您有時候可能需要轉換 (以一點的十二分之一為單位),例如當您呼叫 Windows API 函式為像素。本文將告訴您,如何執行這項操作。

本文假設您已熟悉使用 Visual Basic 應用程式以及建立 Microsoft Access 應用程式使用程式設計與 Microsoft Access 所提供的工具。

其他相關資訊

下面的 [TwipsPerPixelX() 和 TwipsPerPixelY() 函數可用來尋找一個像素的維度中 (以一點的十二分之一為單位)。像素尺寸系統之間可以有所不同且可能永遠無法方形,因此不同的函式,以像素寬度和高度是必要。

若要將這些函式加入至您的應用程式,將其中一個下列的程式碼區塊複製到新的模組。

注意: 您可能必須在現有的 Microsoft Access 程式庫中定義某些 Microsoft Windows API 函式,因此,您宣告可能是重複的項目。如果您接收到重複的程序名稱] 錯誤訊息,移除,或標記為註解在您的程式碼中宣告陳述式。

在 Microsoft Access 7.0 和 97 中

注意: 在標準模組不類別模組中放置於此程式碼。
Option Explicit

Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, _
  ByVal hdc As Long) As Long
Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, _
  ByVal nIndex As Long) As Long

Const HWND_DESKTOP As Long = 0
Const LOGPIXELSX As Long = 88
Const LOGPIXELSY As Long = 90

'--------------------------------------------------
Function TwipsPerPixelX() As Single
'--------------------------------------------------
'Returns the width of a pixel, in twips.
'--------------------------------------------------
  Dim lngDC As Long
  lngDC = GetDC(HWND_DESKTOP)
  TwipsPerPixelX = 1440& / GetDeviceCaps(lngDC, LOGPIXELSX)
  ReleaseDC HWND_DESKTOP, lngDC
End Function

'--------------------------------------------------
Function TwipsPerPixelY() As Single
'--------------------------------------------------
'Returns the height of a pixel, in twips.
'--------------------------------------------------
  Dim lngDC As Long
  lngDC = GetDC(HWND_DESKTOP)
  TwipsPerPixelY = 1440& / GetDeviceCaps(lngDC, LOGPIXELSY)
  ReleaseDC HWND_DESKTOP, lngDC
End Function
				
將這些函式將分割 (以一點的十二分之一為單位) 您想要藉由水平測量任一 TwipsPerPixelX()] 或 [垂直測量的 TwipsPerPixelY() 轉換的數目。下列是範例:
OldTwips = 2377
NewPixels = OldTwips / TwipsPerPixelX()
				

在 Microsoft Access 1.x 和 2.0

注意: 在下列的程式碼範例的線條結尾是以底線 (_) 作為行接續字元。重新建立這個程式碼中存取基本時,則請移除行尾底線。
Option Explicit

Declare Function GetDC Lib "User" (ByVal hwnd As Integer) As Integer
Declare Sub ReleaseDC Lib "User" (ByVal hwnd As Integer, _
  ByVal hdc As Integer)
Declare Function GetDeviceCaps Lib "Gdi" (ByVal hdc As Integer, _
  ByVal nIndex As Integer) As Integer

Const HWND_DESKTOP = 0
Const LOGPIXELSX = 88
Const LOGPIXELSY = 90

'--------------------------------------------------
Function TwipsPerPixelX() As Single
'--------------------------------------------------
'Returns the width of a pixel, in twips.
'--------------------------------------------------
  Dim intDC As Integer
  intDC = GetDC(HWND_DESKTOP)
  TwipsPerPixelX = 1440 / GetDeviceCaps(intDC, LOGPIXELSX)
  ReleaseDC HWND_DESKTOP, intDC
End Function

'--------------------------------------------------
Function TwipsPerPixelY() As Single
'--------------------------------------------------
'Returns the height of a pixel, in twips.
'--------------------------------------------------
  Dim intDC As Integer
  intDC = GetDC(HWND_DESKTOP)
  TwipsPerPixelY = 1440 / GetDeviceCaps(intDC, LOGPIXELSY)
  ReleaseDC HWND_DESKTOP, intDC
End Function
				
將這些函式將分割 (以一點的十二分之一為單位) 您想要藉由水平測量任一 TwipsPerPixelX()] 或 [垂直測量的 TwipsPerPixelY() 轉換的數目。下列是範例:
OldTwips = 2377
NewPixels = OldTwips / TwipsPerPixelX()
				

?考

如需有關這個主題的詳細資訊,搜尋 宣告陳述式,使用 Microsoft Access 說明索引。

這篇文章中的資訊適用於:
  • Microsoft Access 1.0 Standard Edition
  • Microsoft Access 1.1 Standard Edition
  • Microsoft Access 2.0 Standard Edition
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
關鍵字:?
kbmt kbhowto kbprogramming KB94927 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:94927? (http://support.microsoft.com/kb/94927/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
Retired KB Article依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。