13.図形の内部を塗りつぶす |
1.図形の内部を塗りつぶす 2. 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:追加なし 使用 API:ExtFloodFill その他 :このサンプルは、Win32 API を使用しておりますので、ある程度 Win32 API が理解できる方がお使い下さい。 : |
1.図形の内部を塗りつぶす |
Option Explicit 'SampleNo=071 2002.05.16 '現在選択されているブラシで一定の範囲内を塗りつぶす。(P482) Private Declare Function ExtFloodFill Lib "gdi32" _ (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, _ ByVal crColor As Long, ByVal wFillType As Long) As Long Private Sub Command1_Click() 'APIを使っての塗りつぶし Dim Ret As Long With Picture1 'スケールモードをピクセル単位に .Cls '一旦消去 .ScaleMode = vbPixels '指定しないと境界が解らない .ForeColor = QBColor(9) '三角形を描画 '基点から下方向に Picture1.Line (10, 10)-(10, 100) 'その地点から水平方向右側に Picture1.Line (10, 100)-(100, 100) 'その位置から基点を結ぶ Picture1.Line (100, 100)-(10, 10) .FillStyle = vbFSSolid '塗りつぶし .FillColor = RGB(255, 0, 0) '赤 'この位置の他の色の内側部分を塗りつぶす Ret = ExtFloodFill(.hdc, 20, 50, .ForeColor, 0&) '三角形の外側を塗りつぶす .FillColor = RGB(255, 255, 0) '黄 Ret = ExtFloodFill(.hdc, 80, 10, .ForeColor, 0&) End With End Sub Private Sub Command2_Click() 'Line での塗りつぶし Dim i As Integer Picture1.ScaleMode = vbPixels 'ピクセル単位 Picture1.BackColor = RGB(255, 227, 240) For i = 1 To 45 Picture1.Line (10 + i, 10 + i)-(10 + i, 100 - i), QBColor(12) Picture1.Line (100 - i, 10 + i)-(100 - i, 101 - i), QBColor(9) Picture1.Line (10 + i, 10 + i)-(100 - i, 10 + i), QBColor(14) Picture1.Line (10 + i, 100 - i)-(100 - i, 100 - i), QBColor(10) Next i End Sub Private Sub Command3_Click() With Picture1 .Cls '一旦消去 .ScaleMode = vbTwips .FillStyle = vbFSSolid '塗りつぶし .FillColor = RGB(255, 0, 0) '赤 End With Picture1.Line (100, 100)-(1000, 1000), , B With Picture1 .FillStyle = vbDiagonalCross '網掛け .FillColor = QBColor(9) '青 End With Picture1.Circle (1600, 600), 400 End Sub 図1.上記実行結果(画像は合成しています) |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
Win32APIのExtFloodFill 関数を使って図形の内部を塗り潰す Line での図形の内部を塗りつぶし VBの機能で図形の内部を塗りつぶし |