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

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

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

Re[5]: PictureBox上で四角形を描く


(過去ログ 111 を表示中)

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

■65968 / inTopicNo.1)  PictureBox上で四角形を描く
  
□投稿者/ ぶぶ (1回)-(2013/03/27(Wed) 15:16:33)

分類:[VB.NET/VB2005 以降] 

最近までVisualBasic Ver6.0にて作成していました。
今はVisualBasic 2008 Express で作成しています。OSはXPです。

PictureBoxには図を表示していて、その上にいままで(VB 6.0の時)は、Lineコントロールを配置して、
Mousemoveイベントで、四角形を伸ばしたり縮めたりする描画を行っていました。

今回その動きをVB2008で作成しようとしているのですが、
まず、LineコントロールがPictureBoxの下に隠れてしまい、
再現できませんでした。
次に、ラベルコントロールをpictureBoxの上に配置し、
枠線にて再現しようとしましたが、下の図を透過することはできませんでした。

Pictureboxの図に直接ラインを描画するしか手がないでしょうか?
マウスが動くたびに絵を再描画するとちらつきが気になります。

お知恵をお貸しください。
引用返信 編集キー/
■65969 / inTopicNo.2)  Re[1]: PictureBox上で四角形を描く
□投稿者/ shu (248回)-(2013/03/27(Wed) 15:47:23)
No65968 (ぶぶ さん) に返信

Paintイベントなどを使えないとすると
Labelを4つ使えば四角形は表現出来ます。
後リージョンの設定を行えば1つのラベルでも中を切り取ったようなものを作成することが出来ます。

Dim rg As New Region(New Rectangle(0, 0, Label1.Width, Label1.Height))
rg.Exclude(New Rectangle(3, 3, Label1.Width - 6, Label1.Height - 6))
Label1.Region = rg

引用返信 編集キー/
■65971 / inTopicNo.3)  Re[2]: PictureBox上で四角形を描く
□投稿者/ ぶぶ (2回)-(2013/03/27(Wed) 17:11:53)
No65969 (shu さん) に返信

返信ありがとうございます。
さっそく、コードを実行したところ、うまくいきました。

これは、できたらでいいのですが、枠線の色や太さは変えることはできないですよね?
現状でも、やりたいことはできているのでいいのですが、できたら、線の色を赤に
するとよりわかりやすくなるかなと思ったので・・・

そうすると、ラベル自体の背景色を変更して、Borderをなしにして表現するやり方になるでしょうか・・・

> ■No65968 (ぶぶ さん) に返信
>
> Paintイベントなどを使えないとすると
> Labelを4つ使えば四角形は表現出来ます。
> 後リージョンの設定を行えば1つのラベルでも中を切り取ったようなものを作成することが出来ます。
>
> Dim rg As New Region(New Rectangle(0, 0, Label1.Width, Label1.Height))
> rg.Exclude(New Rectangle(3, 3, Label1.Width - 6, Label1.Height - 6))
> Label1.Region = rg
>
引用返信 編集キー/
■65972 / inTopicNo.4)  Re[3]: PictureBox上で四角形を描く
□投稿者/ shu (249回)-(2013/03/27(Wed) 17:29:36)
No65971 (ぶぶ さん) に返信
> これは、できたらでいいのですが、枠線の色や太さは変えることはできないですよね?
> 現状でも、やりたいことはできているのでいいのですが、できたら、線の色を赤に
> するとよりわかりやすくなるかなと思ったので・・・
>
> そうすると、ラベル自体の背景色を変更して、Borderをなしにして表現するやり方になるでしょうか・・・
単色ならそうなります。複数の色が絡んでくるとLabelのPaintイベントを処理することに
なるかと思います。
太さは提示コードの3を変えればよいです

New Rectangle([横幅], [縦幅], Label1.Width - [横幅] * 2, Label1.Height - [縦幅] * 2)
ですね。
引用返信 編集キー/
■65976 / inTopicNo.5)  Re[4]: PictureBox上で四角形を描く
□投稿者/ ぶぶ (3回)-(2013/03/27(Wed) 18:12:49)
No65972 (shu さん) に返信
ありがとうございます。
ラベル自体の色を変えずに試していたため、黒でしかできないと思い込んでいました。
ラベルの背景色を赤にして、Borderもなくし試したところ赤いラインでひけました。
太さに関しても確認いたしました。
ありがとうございました。

> ■No65971 (ぶぶ さん) に返信
>>これは、できたらでいいのですが、枠線の色や太さは変えることはできないですよね?
>>現状でも、やりたいことはできているのでいいのですが、できたら、線の色を赤に
>>するとよりわかりやすくなるかなと思ったので・・・
>>
>>そうすると、ラベル自体の背景色を変更して、Borderをなしにして表現するやり方になるでしょうか・・・
> 単色ならそうなります。複数の色が絡んでくるとLabelのPaintイベントを処理することに
> なるかと思います。
> 太さは提示コードの3を変えればよいです
>
> New Rectangle([横幅], [縦幅], Label1.Width - [横幅] * 2, Label1.Height - [縦幅] * 2)
> ですね。
引用返信 編集キー/
■65991 / inTopicNo.6)  Re[5]: PictureBox上で四角形を描く
□投稿者/ ぶぶ (4回)-(2013/03/28(Thu) 09:36:47)
解決したのにチェックしていませんでした。
ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -