グラデーション塗り潰し(T) <TOP>
フォームをグラデーションで塗り潰します。
GdiGradientFill 長方形と三角形構造内を塗り潰す
GetDC 指定されたウィンドウのクライアント領域のデバイスコンテキストのハンドルを取得
ReleaseDC デバイスコンテキストを解放
'================================================================ '= グラデーション塗り潰し '= (GdiGradientFill.bas) '================================================================ #include "Windows.bi" Type TRIVERTEX x As Long y As Long Red As Integer Green As Integer Blue As Integer Alpha As Integer End Type Type GRADIENT_RECT UpperLeft As Long LowerRight As Long End Type #define GRADIENT_FILL_RECT_H &H0 '水平方向にグラデーション #define GRADIENT_FILL_RECT_V &H1 '垂直方向にグラデーション #define GRADIENT_FILL_TRIANGLE &H2 '三角形グラデーション #define GRADIENT_FILL_OP_FLAG &HFF ' 長方形と三角形構造内を塗り潰す Declare Function Api_GdiGradientFill& Lib "gdi32" Alias "GdiGradientFill" (ByVal hDC&, pVertex As TRIVERTEX, ByVal dwNumVertex&, pMesh As GRADIENT_RECT, ByVal dwNumMesh&, ByVal dwMode&) ' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得。その後、GDI 関数を使って、返されたデバイスコンテキスト内で描画を行える Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) '================================================================ '= '================================================================ Declare Function Index bdecl () As Integer Function Index() Index = val(Mid$(GETDLGRADIOSELECT("Radio1"), 6)) -1 End Function '================================================================ '= '================================================================ Declare Function LongToUShort(Unsigned As Long) As Integer Function LongToUShort(Unsigned As Long) As Integer LongToUShort = int(Unsigned - &H10000) End Function '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var vert(1) As TRIVERTEX Var gRect As GRADIENT_RECT Var hDC As Long Var Ret As Long hDC = Api_GetDC(GethWnd) '黒〜 vert(0).x = 0 vert(0).y = 0 vert(0).Red = 0 vert(0).Green = 0 vert(0).Blue = 0 vert(0).Alpha = 0 '〜赤・緑・青 Select Case Index Case 0 vert(1).Red = LongToUShort(&HFF00) vert(1).Green = 0 vert(1).Blue = 0 Case 1 vert(1).Red = 0 vert(1).Green = LongToUShort(&HFF00) vert(1).Blue = 0 Case 2 vert(1).Red = 0 vert(1).Green = 0 vert(1).Blue = LongToUShort(&HFF00) End Select vert(1).x = GetWidth vert(1).y = GetHeight vert(1).Alpha = 0 gRect.UpperLeft = 0 gRect.LowerRight = 1 Ret = Api_GdiGradientFill(hDC, vert(0), 2, gRect, 1, GRADIENT_FILL_RECT_H) Ret = Api_ReleaseDC(GethWnd, hDC) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End