投稿者 下田の住人  (社会人) 投稿日時 2012/2/9 17:13:23
初めて投稿致します。よろしくお願い致します。
http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=9715のyamada様の投稿を基本にして、2つの境界色を異にする長方形を描き、その領域の塗りつぶしを試みました。
閉領域の塗りつぶしは出来るようにはなりましたが、すぐ消えてしまい、再度のマウスクリックで安定する状態となります。「消え」を防ぐための方法につきよろしく御指導下さい。

[CODE]
 Private Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        PictureBox1.Refresh()
        PictureBox1.CreateGraphics.DrawRectangle(Pens.Red, 50, 80, 120, 100)
        PictureBox1.CreateGraphics.DrawRectangle(Pens.Black, 80, 120, 120, 100)
 End Sub

Private Sub PictureBox1_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseClick
        Dim g As Graphics = PictureBox1.CreateGraphics
        Dim wFillType As UInteger = 1 ' FLOODFILLSURFACE 
        Dim hNewBrush As IntPtr
        Dim hOldBrush As IntPtr
        Dim NewBrush As LOGBRUSH
        Dim hDC As IntPtr
        hDC = g.GetHdc
        NewBrush.lbColor = ColorTranslator.ToWin32(Color.Yellow)
        NewBrush.lbStyle = 0
        NewBrush.lbHatch = 0
        hNewBrush = CreateBrushIndirect(NewBrush)
        hOldBrush = SelectObject(hDC, hNewBrush)
        ExtFloodFill(hDC, e.X, e.Y, GetPixel(hDC, e.X, e.Y), wFillType)
        g.ReleaseHdc()
        hNewBrush = SelectObject(hDC, hOldBrush)
        DeleteObject(hNewBrush)
        g.Dispose()
end sub
{/CODE]