Gerade bei Programmen die mit viel Grafik
arbeiten, ist es sehr zu empfehlen, im Vorab zu ermitteln, wieviel Farben eingestellt sind
(16;256;65536;16Mill)
um gegebenenfalls den Programmteil zu laden, der mit weniger Farben auskommt, oder den
Programmstart abzubrechen und dem User eine Nachricht über die erforderliche Anzahl an
Farben anzuzeigen.
Nachstehendes Beispiel ermittelt lediglich die Farbanzahl und gibt sie in einer Messagebox
aus.
######################################################
16Bit
General/Declarations
Declare Function GetDeviceCaps Lib "GDI" (ByVal hdc As Integer, ByVal nIndex As
Integer) As Integer
Declare Function GetDC Lib "User" (ByVal hWnd As Integer) As Integer
Declare Function ReleaseDC Lib "User" (ByVal hWnd As Integer, ByVal hdc As
Integer) As Integer
Const BITSPIXEL = 12
Const PLANES = 14
######################################################
32Bit
Allgemein/Deklarationen
Private Declare Function GetDeviceCaps Lib "gdi32" Alias
"GetDeviceCaps" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd
As Long) As Long
Private Declare Function ReleaseDC Lib "user32" Alias "ReleaseDC"
(ByVal hwnd As Long, ByVal hdc As Long) As Long
Const BITSPIXEL = 12
Const PLANES = 14
#####################################################Private Sub Form_Load()
Dim hdc As Long, RetVal As Long
Dim nBitsPerPixel As Integer
hdc = GetDC(0)
nBitsPerPixel = GetDeviceCaps(hdc, BITSPIXEL) * GetDeviceCaps(hdc, PLANES)
RetVal = ReleaseDC(0, hdc)
MsgBox("Anzahl der Farben= " & 2 ^ nBitsPerPixel)
End Sub |