ここから本文です

VB6.0の図形の塗りつぶしについて。

アバター

ID非公開さん

2010/3/1404:27:39

VB6.0の図形の塗りつぶしについて。

どうしてもわからないので教えてください。


図形の塗りつぶしの際に、
x、y座標をn個ずつ格納し、Line関数で図形を描いています。
そのn個の座標で形成された四角形が複数あったとして所定の四角形を塗りつぶしたいしたいのですが
できません。以下を用いて作っています。


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

----------------------------------------------------
省略

Picture1.ForeColor = QBColor(0)

ここでlineを使って線を引いています。
形成された四角形は任意の位置に10個くらいです。

With Picture1
.FillStyle = 0
.FillColor = QBColor(2) '赤
ret = ExtFloodFill(.hdc, 四角形の左上のx座標×10個分, 四角形の左上のy座標×10個分, .ForeColor, 0&)
End With


こう書けば、すべての四角形が塗りつぶされると思ったのですが、できません。。。
どこが間違っているのか教えてください。お願いいたします。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
1,239
回答数:
1

違反報告

ベストアンサーに選ばれた回答

nlf********さん

2010/3/1409:10:45

ExtFloodFill の塗りつぶしの開始点というのは、四角形を塗りつぶすなら、四角形の内部のどこかでなければならないのだと思います。Line関数で使用した左上のX座標、Y座標は境界線上となってしまうので、塗りつぶすことができないと思います。

ExtFloodFill(.hdc, [Line関数で使用した左上のX座標+1], [四角形の左上のY座標+1], .ForeColor, 0&)

としてみてはいかがでしょうか。

アバター

質問した人からのコメント

2010/3/14 15:32:47

成功 ようやく、解決しました!境界条件の設定の所でしたか^^;
ご丁寧な説明でわかりやすかったです!本当にありがとうございます

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる