投稿者 viajar  (その他) 投稿日時 2012/7/3 14:02:34
ピクチャーボックスに表示されている画像をクリックすると
クリックしたところを(他の色で囲まれた部分まで)塗りつぶすようにするにはどうすればいいのでしょうか?
とりあえず色々調べてみてここまでは何とかできたのですが、
特にExtFloodFillのhdcの部分に何を指定すればいいのかわかりません。

ちなみにピクチャーボックスの名称はmapで、panelという名称のパネルの上にピクチャーボックスを設置しています。
使用するかどうかわからない部分はコメントアウトしています。

Public Class main
    Private Declare Function ExtFloodFill Lib "gdi32" _
                   (ByVal hdc As IntPtr, _
                    ByVal X As Integer, _
                    ByVal Y As Integer, _
                    ByVal crColor As Integer, _
                    ByVal wFillType As UInteger) As Boolean
    Private Sub main_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        opendialog.FileName = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.Location) & "\map.png"
        If My.Computer.FileSystem.FileExists(opendialog.FileName) Then
            Dim bmp As Bitmap
            bmp = Image.FromFile(opendialog.FileName)
            map.Image = bmp
        End If
    End Sub

    Private Sub map_Click(sender As System.Object, e As System.EventArgs) Handles map.Click
        'この辺がよくわからない
        'Dim bmp As Bitmap = map.Image
        'Dim hdc As IntPtr = map.Handle
        'Dim brs As Brush = Brushes.GreenYellow
        Dim p As New Point
        p = Me.PointToClient(Windows.Forms.Cursor.Position)
        p.X -= map.Left
        p.Y -= map.Top
        'ExtFloodFill(hdc, p.X, p.Y, RGB(255, 0, 0), 0)
    End Sub
End Class