VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 描画・画像関係のメニュー
1.Imageコントロールで画像を拡大・縮小・移動表示・印刷する
2.PictureBox コントロールで画像を拡大・縮小表示する
3.網掛け文字を表示及び印字
4.ピクチャーボックス上に円グラフを描画する
5.AVI(アニメーション)ファイルを表示する
6.ピクチャーボックスに表示・描画した画像・文字の保存及び消去方法
7.フォームの背景にグラデーションを描く(VBの標準の機能で)
8.上下左右の鏡像を得る(VBの標準の機能で)
9.ピクチャーを90度毎に回転させて表示(VBの機能で)
10.表示位置・印字位置(文字列)を揃える
11.画像ファイルをスクロール表示しながら連続読み込み
12.メモリDCを使っての画像表示(拡大・縮小・鏡像・180度回転)
13.図形の内部を塗りつぶす
14.
15.
16.
17.
18.
19.
20.その他、当サイト内に掲載の描画・画像に関するサンプル


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.上記実行結果(画像は合成しています)
 drawing13_01

このページのトップへ移動します。 2.


このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
Win32APIのExtFloodFill 関数を使って図形の内部を塗り潰す  Line での図形の内部を塗りつぶし  VBの機能で図形の内部を塗りつぶし




このページのトップへ移動します。