GradientFill

機能
矩形、または三角形の内部をグラデーションで塗りつぶす
Declare Function GradientFill Lib "msimg32.dll" _
(ByVal hdc As Long, pvertex As Any, ByVal dwNumVertex As Long, _
pMesh As Any, ByVal dwNumMesh As Long, ByVal dwMode As Long) As Long
Declare Function GradientFill Lib "msimg32.dll" _
(ByVal hdc As Integer, pvertex As Integer, ByVal dwNumVertex As Integer, _
pMesh As Integer, ByVal dwNumMesh As Integer, ByVal dwMode As Integer) As Integer

BOOL GradientFill(
HDC hdc,
CONST PTRIVERTEX pVertex,
DWORD dwNumVertex,
CONST PVOID pMesh,
DWORD dwNumMesh,
DWORD dwMode
);

System.Drawing.Graphics.FillRectangle(Drawing2D.LinearGradiantBrush, Rectangle)
引数
hdc

描画先のデバイスコンテキストのハンドル
pVertex
頂点座標を定義するTRIVERTEX構造体の配列
dwNumVertex
pVertexの要素数
pMesh
三角形モードのときGRADIENT_TRIANGLE構造体の配列
矩形モードのときGRADIENT_RECT構造体の配列
dwNumMesh
pMeshの要素数
dwMode
グラデーションモードを指定する定数の一つ
戻り値
正常終了のとき                      0以外
エラーのとき                        0
備考
TRIVERTEX構造体のRed、Green、Blueの各メンバは
Byte型ではなく、整数型である。カラー値は上位バイトに設定する。
dwModeの定数

GRADIENT_FILL_RECT_H = &H0          水平方向にグラデーション
GRADIENT_FILL_RECT_V = &H1          垂直方向にグラデーション
GRADIENT_FILL_TRAIANGLE = &H2       三角形グラデーション
サンプル
ダウンロード(GradientFill.lzh 1.87kB)

Private Sub Command1_Click()

Me.Picture1.ScaleMode = 3
Dim pVertex(3) As TRIVERTEX
Dim pMesh As GRADIENT_RECT

With pVertex(0)
    .x = 0
    .y = 0
    .Red = &HC300
    .Green = &H7800
    .Blue = &HFF00
    .Alpha = 0
End With
With pVertex(1)
    .x = Me.Picture1.ScaleWidth
    .y = Me.Picture1.ScaleHeight
    .Red = &H2F00
    .Green = &H8600
    .Blue = &H4500
    .Alpha = &HF400
End With
With pMesh
    .LowerLight = 0
    .UpperLeft = 1
End With
Call GradientFill(Me.Picture1.hdc, pVertex(0), _
    2, pMesh, 1, GRADIENT_FILL_RECT_H)
End Sub