VB6で太い点線を描くには?

解決


たまちゃん  2006-05-30 00:02:44  No: 95554

太い点線を描画したいのですが、どのようにすればよいかわかりません。教えていただきたいのですが。


特攻隊長まるるう  2006-05-30 23:33:37  No: 95555

Line メソッドをループでまわして
たくさん直線を描くとか。


nyangetsu  2006-05-31 00:58:59  No: 95556

便乗しますが

Lineオブジェクトで点線や鎖線のBorderWidthプロパティを2以上にすると、ただの太線に見えるようになっちゃいますよね……。
これを点線や鎖線のまま太線にしたい場合は、BorderWidth=1のLineオブジェクトをたくさん横に並べるしか方法がないのでしょうか。


特攻隊長まるるう  2006-05-31 01:27:41  No: 95557

>Lineオブジェクトで点線や鎖線のBorderWidthプロパティを2以上にすると
最初の質問も、そのことが問題で出た質問だと仮定して回答してますが。。。
# Line オブジェクトと Line メソッドは別のものです。


我龍院忠太  2006-05-31 02:01:55  No: 95558

>Lineオブジェクトで点線や鎖線のBorderWidthプロパティを2以上にすると、
>ただの太線に見えるようになっちゃいますよね……。

見えるのではなくて、APIの CreatePenIndirect を使ってLineを書かせるとき、
実線、破線、点線・・等スタイルを設定できますが、このスタイルはペン幅が
1の時だけ有効で、その他は全て実線になってしまいます。
多分これから来ているのでしょう。


nyangetsu  2006-05-31 02:15:03  No: 95559

>特攻隊長まるるう様
いやいや、私の質問はLineオブジェクトをフォームに貼り付けたときの話です。
たまちゃん様のLineメソッドの話とは別でございます。

>我龍院忠太様
と、いうことは、やはりペン幅1のLineオブジェクトを並べるしかないのでしょうか。


我龍院忠太  2006-05-31 02:53:03  No: 95560

ついレスしてしまいましたが、便乗質問は解決のチェックが難しいので出来れば別スレを立てた方が・・
で、Lineオブジェクトを太くしてみると解るのですが、Lineの端面は四角では有りません。
つまり、端面を気にするなら、Lineオブジェクトを長手方向に並べる方が良いと思います。
端面を気にしないなら縦に並べれば良いでしょう。


魔界の仮面弁士  2006-05-31 02:57:59  No: 95561

GdipDrawLine API を使ってみるとか。


特攻隊長まるるう  2006-05-31 02:59:31  No: 95562

最初の質問者は Line メソッドの質問はしていません。
広く、太い点線の描画です。
その際、ライン (Line) コントロールを使って太くした時に
点線が描けなかったのでは?というのはボクの予想です。
それに対し、ラインコントロールにこだわらず、メソッドで
描画して対応しては?との回答をしました。

>たまちゃん様のLineメソッドの話とは別でございます。
ならば便乗質問で割り込むのは失礼でしょう。質問者が
解決した後ならともかく、勝手に自分の質問にすりかえる
のは迷惑だと思いませんか?別スレッドをたててそちらで
質問してください。


我龍院忠太  2006-05-31 16:52:32  No: 95563

>GdipDrawLine API を使ってみるとか。
確かに、GDI+ならStyle もDash、DashDot、DashDotDot、Dot等があり
太さも自由自在に太さも変えられますね。
.NETからしか使ったことは有りませんが、VB6から使用してみるのも手ですね。

>と、いうことは、やはりペン幅1のLineオブジェクトを並べるしかないのでしょうか。
よく考えたら、線幅が太くなってくると線幅とドットの間隔の比率が変わって、だめジャン。(^^;
Lineコントロール又はLineメソドのどちらを使っても、きちんとやるには、線の太さと
開始点終了点をパラメーターとして受け取り、DashやDashDotを引く関数を作ってしまった方が
速いですね。


魔界の仮面弁士  2006-05-31 18:12:49  No: 95564

> 確かに、GDI+ならStyle もDash、DashDot、DashDotDot、Dot等があり
DashStyle 列挙値、ですね。あるいは、GdipSetPenDashArray API にて、
カスタム定義となる、任意スタイルの破線を指定する事も。

> 太さも自由自在に太さも変えられますね。
GdipCreatePen1 / GdipCreatePen2 API の第 3 引数、もしくは、
GdipSetPenWidth API あたりで。


魔界の仮面弁士  2006-05-31 18:15:08  No: 95565

訂正:

> GdipCreatePen1 / GdipCreatePen2 API の第 3 引数、
幅の指定は 第 2 引数でした。m(_ _)m
(第 3 引数は Unit の指定)


タキシード仮面  2006-05-31 19:38:28  No: 95566

どこかのスレで、APIを応用したプログラムが掲載されていたが、どこだったかな?たまちゃん様の答えになっていない・・・。どなたかそのスレ知りませんか。


たまちゃん  2006-05-31 22:47:24  No: 95567

スレ見つけてみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加