投稿者 よねKEN  (社会人) 投稿日時 2010/7/29 23:13:11
> Private Declare Function CreateBrushIndirect Lib "gdi32" _
>       (ByVal lpLogBrush As LOGBRUSH) As <MarshalAs(UnmanagedType.Bool)> Boolean

ただしくは、「ByRef lpLogBrush As LOGBRUSH」ですね。
VB6ではByRef/ByValの指定を省略するとByRefを指定したものとして扱われます。

> APIを使わない方法ですが、シード・フィル アルゴリズムを調べてみたところ、2008にはPointと言うメソッドがないというのが大問題でここでまた進まなくなってしまいました。
> bitmapならGetPixelが使えるのですが、FormやPictureBoxなどは、調べてみてもBackColorプロパティを使うとかここでは意味のないことしかわかりませんでした。 

FormやPictureBoxに対して描画する場合にも、
BitmapクラスのGetPixel/SetPixelを使う方法が使えます。

最初の質問投稿で、

> Dim g As Graphics = Me.CreateGraphics

というコードがあり、CreateGraphicsメソッドを使っていますが、
このメソッドを使わないようにします。

具体的にはどうやるのかというと、手順は以下のURLを参照してください。
http://dobon.net/vb/dotnet/graphics/pictureboximageanddrawimage.html

ポイントは、
(1)Bitmapクラスのインスタンスを用意する
(2)GraphicsクラスはこのBitmapオブジェクトからGraphics.FromImageメソッドで取得する
(3)PictureBoxを使う場合なら、このBitmapオブジェクトをImageプロパティに設定する
ということです。
(PictureBoxを使わずに、Formに直接描画するような場合であれば、
 (1)、(2)の手順までは同じで、FormのPaintイベントの中でe.Graphicsを使って、
 Graphics.DrawImageメソッドで(1)のBitmapを描画してやります)