C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: 白黒交互の点線を描画する方法


(過去ログ 45 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■24188 / inTopicNo.1)  白黒交互の点線を描画する方法
  
□投稿者/ ハムナプトラ (7回)-(2008/08/29(Fri) 07:50:35)

分類:[VB.NET/VB2005] 

XPの画面上で画面をドラッグすると白黒交互のドットから成る四角形が描画されます
これだとどんな背景上でもくっきりと見える直線となるのですが
このような直線をvb.netで実現できるのでしょうか

こういう点線ではなくて

 ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■

こういう点線

□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■

引用返信 編集キー/
■24193 / inTopicNo.2)  Re[1]: 白黒交互の点線を描画する方法
□投稿者/ nakaP (25回)-(2008/08/29(Fri) 09:36:41)
こんにちは。

No24188 (ハムナプトラ さん) に返信
> XPの画面上で画面をドラッグすると白黒交互のドットから成る四角形が描画されます
> これだとどんな背景上でもくっきりと見える直線となるのですが
> このような直線をvb.netで実現できるのでしょうか
>
> こういう点線ではなくて
> ↓
>  ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
>
> こういう点線
> ↓
> □■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
>

System.Drawing.Pen.DashStyleでSolid以外を指定すれば出来るかと。
http://msdn.microsoft.com/ja-jp/library/system.drawing.pen.dashstyle.aspx

引用返信 編集キー/
■24213 / inTopicNo.3)  Re[2]: 白黒交互の点線を描画する方法
□投稿者/ ハムナプトラ (8回)-(2008/08/29(Fri) 12:26:04)
No24193 (nakaP さん) に返信

レスありがとうございます。
ダッシュスタイルは理解していますが、ダッシュスタイルの点線では黒い背景に黒い点線だと見えませんので
背景が黒でも白でも見えるように白黒白黒白黒の点線を描画したいのです

引用返信 編集キー/
■24216 / inTopicNo.4)  Re[3]: 白黒交互の点線を描画する方法
□投稿者/ よねKEN (176回)-(2008/08/29(Fri) 13:01:38)
> ダッシュスタイルは理解していますが、ダッシュスタイルの点線では黒い背景に黒い点線だと見えませんので
> 背景が黒でも白でも見えるように白黒白黒白黒の点線を描画したいのです

(1)白い線を引く
(2)黒い線をダッシュスタイルで引く

の順で同じサイズの線を描画すればよいかと思います。

他にもやりようはあると思いますが、これが簡単な気がします。

引用返信 編集キー/
■24217 / inTopicNo.5)  Re[3]: 白黒交互の点線を描画する方法
□投稿者/ dolan (7回)-(2008/08/29(Fri) 13:01:51)
こんにちは。

No24213 (ハムナプトラ さん) に返信
> ダッシュスタイルは理解していますが、ダッシュスタイルの点線では黒い背景に黒い点線だと見えませんので
> 背景が黒でも白でも見えるように白黒白黒白黒の点線を描画したいのです

最初に白い実線を描いた後で黒の点線を描けばいいんじゃないでしょうか?だめ?(笑)

引用返信 編集キー/
■24218 / inTopicNo.6)  Re[3]: 白黒交互の点線を描画する方法
□投稿者/ nakaP (26回)-(2008/08/29(Fri) 13:18:56)
No24213 (ハムナプトラ さん) に返信

dolanさん、よねKENさんと同じ方法をお勧めします。
実験してみましたがぱっと見求めているものが出来ているかと。

一応実験したコードを乗せておきます。

private void Form1_Paint(object sender, PaintEventArgs e) {
    Graphics g = e.Graphics;

    Rectangle r = new Rectangle(10, 10, 100, 100);
    Pen p = new Pen(Brushes.White);
    g.DrawRectangle(p, r);
    Pen p2 = new Pen(Brushes.Black);
    p2.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
    g.DrawRectangle(p2, r);
}

引用返信 編集キー/
■24222 / inTopicNo.7)  Re[4]: 白黒交互の点線を描画する方法
□投稿者/ Tram (1回)-(2008/08/29(Fri) 14:33:12)
白黒交互の点線というハムナプトラさん本来の目的とは外れますが、
見やすさという意味で、ControlPaint.DrawReversibleFrameはいかがでしょうか。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.controlpaint.drawreversibleframe(VS.80).aspx
これを使用すれば、背景に対して反転した色の点線も描画可能です。
引用返信 編集キー/
■24224 / inTopicNo.8)  Re[5]: 白黒交互の点線を描画する方法
□投稿者/ れい (760回)-(2008/08/29(Fri) 15:03:11)
突っ込みだけになってしまいますが。

GDIとかGDI+で描くと
拡大縮小とかアンチエイリアスとかかかるので、
その辺考慮しないと正しいしましまにならないと思います。

しましまのエッジがぼやけたり、
しましまの長さが少し変わってしまったり。

なので、正しいしましまを書くのは結構大変ではないかと。

引用返信 編集キー/
■24552 / inTopicNo.9)  Re[6]: 白黒交互の点線を描画する方法
□投稿者/ ハムナプトラ (9回)-(2008/09/04(Thu) 05:18:45)
2008/09/04(Thu) 05:19:49 編集(投稿者)

みなさまレスありがとうございます
交互に描画するのは思いつきませんでした
円を描くと少しかすれますが四角形では完璧です!
ほんとうにありがとうございます!

ちなみに、色の反転は一番やりたかった方法ですが
いろんな形をかきたかったので断念しました!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -