矩形、または三角形の内部をグラデーションで塗りつぶす
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構造体の配列dwNumMesh
矩形モードのときGRADIENT_RECT構造体の配列
pMeshの要素数dwMode
グラデーションモードを指定する定数の一つ戻り値
正常終了のとき 0以外備考
エラーのとき 0
TRIVERTEX構造体のRed、Green、Blueの各メンバはdwModeの定数
Byte型ではなく、整数型である。カラー値は上位バイトに設定する。
サンプル
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