表示できる色に最も近いカラー値を取得 <TOP>
GetNearestColor 指定のカラー値に対して、デバイスが表示できる色に最も近いカラー値を取得
GetObjectType 指定のオブジェクトのタイプを取得
CreateCompatibleDC 指定されたデバイスコンテキストに関連するデバイスと互換性のあるメモリデバイスコンテキストを作成
CreateBitmap 指定された幅・高さ・色形式を持つビットマップを作成
SelectObject 指定されたデバイスコンテキストのオブジェクトを選択
DeleteObject 論理オブジェクトを削除し、そのオブジェクトに関連付けられていたすべてのシステムリソースを解放
DeleteDC
指定されたデバイスコンテキストを削除
GetDC
デバイスコンテキストのハンドルを取得
ReleaseDC
デバイスコンテキストを解放
'================================================================ '= 表示できる色に最も近いカラー値を取得 '= (GetNearestColor.bas) '================================================================ #include "Windows.bi" ' 指定のカラー値に対して、デバイスが表示できる色に最も近いカラー値を取得 Declare Function Api_GetNearestColor& Lib "gdi32" Alias "GetNearestColor" (ByVal hDC&, ByVal crColor&) ' 指定のオブジェクトのタイプを取得 Declare Function Api_GetObjectType& Lib "gdi32" Alias "GetObjectType" (ByVal hgdiobj&) ' 指定されたデバイスコンテキストに関連するデバイスと互換性のあるメモリデバイスコンテキストを作成 Declare Function Api_CreateCompatibleDC& Lib "gdi32" Alias "CreateCompatibleDC" (ByVal hDC&) ' 指定された幅・高さ・色形式を持つビットマップを作成 Declare Function Api_CreateBitmap& Lib "gdi32" Alias "CreateBitmap" (ByVal nWidth&, ByVal nHeight&, ByVal nPlanes&, ByVal nBitCount&, lpBits As Any) ' 指定されたデバイスコンテキストのオブジェクトを選択 Declare Function Api_SelectObject& Lib "gdi32" Alias "SelectObject" (ByVal hDC&, ByVal hObject&) ' 論理オブジェクトを削除し、そのオブジェクトに関連付けられていたすべてのシステムリソースを解放 Declare Function Api_DeleteObject& Lib "gdi32" Alias "DeleteObject" (ByVal hObject&) ' 指定されたデバイスコンテキストを削除 Declare Function Api_DeleteDC& Lib "gdi32" Alias "DeleteDC" (ByVal hDC&) ' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得 Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) #define OBJ_BITMAP 7 'ビットマップ #define OBJ_BRUSH 2 'ブラシ #define OBJ_DC 3 'デバイスコンテキスト #define OBJ_ENHMETADC 12 '拡張メタファイルのデバイスコンテキスト #define OBJ_ENHMETAFILE 13 '拡張メタファイル #define OBJ_EXTPEN 11 '拡張ペン #define OBJ_FONT 6 'フォント #define OBJ_MEMDC 10 'メモリデバイスコンテキスト #define OBJ_METADC 4 'メタファイルのデバイスコンテキスト #define OBJ_METAFILE 9 'メタファイル #define OBJ_PAL 5 'パレット #define OBJ_PEN 1 'ペン #define OBJ_REGION 8 '領域 #define vbYellow &H00FFFF '黄色のカラーコード Var Shared Text1 As Object Var Shared Text2 As Object Var Shared Button1 As Object Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Text2.Attach GetDlgItem("Text2") : Text2.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var hDC As Long Var nDC As Long Var nBitmap As Long Var MyStr As String Var Ret As Long '親ウィンドウのデバイスコンテキストを取得 hDC = Api_GetDC(GethWnd) 'デバイスコンテキストを作成 nDC = Api_CreateCompatibleDC(hDC) 'ビットマップを作成 nBitmap = Api_CreateBitmap(10, 10, 1, 1, ByVal 0) 'オブジェクトを選択 Ret = Api_SelectObject(nDC, nBitmap) 'オブジェクトタイプを取得 Select Case Api_GetObjectType(nBitmap) Case OBJ_BITMAP MyStr = "Object Type: Bitmap" Case OBJ_BRUSH MyStr = "Object Type: Brush" Case OBJ_FONT MyStr = "Object Type: Font" Case OBJ_PAL MyStr = "Object Type: Pal" Case OBJ_PEN MyStr = "Object Type: Pen" Case OBJ_EXTPEN MyStr = "Object Type: ExtPen" Case OBJ_REGION MyStr = "Object Type: Region" Case OBJ_DC MyStr = "Object Type: Device Context" Case OBJ_MEMDC MyStr = "Object Type: Memory Device Context" Case OBJ_METAFILE MyStr = "Object Type: Metafile" Case OBJ_METADC MyStr = "Object Type: Metafile DC" Case OBJ_ENHMETAFILE MyStr = "Object Type: Enhanched Meatfile" Case OBJ_ENHMETADC MyStr = "Object Type: Enhanched Meatfile DC" End Select 'オブジェクトタイプを表示 Text1.SetWindowText MyStr '最も近いカラー値を取得 Text2.SetWindowText "Nearest Color: &&H" & Hex$(Api_GetNearestColor(nDC, vbYellow)) '解放 Ret = Api_DeleteDC(nDC) Ret = Api_DeleteObject(nBitmap) Ret = Api_ReleaseDC(GethWnd, hDC) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End