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

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

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

Re[8]: ピクチャボックス上にラベルをオーナードローしたいです


(過去ログ 12 を表示中)

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

■3554 / inTopicNo.1)  ピクチャボックス上にラベルをオーナードローしたいです
  
□投稿者/ てはては (1回)-(2007/05/15(Tue) 11:42:47)

分類:[C++/CLI] 

Windows XP
VC++2005.NET Managed
環境で開発中です。

質問が、VC++になってしまい申し訳ありませんが、よろしくお願いします。

やりたいことは、ピクチャボックスを用意して、ビットマップを表示した後で、
ピクチャボックス上でクリックされるごとに、ラベルを貼り付けたいのです。

ラベルをオーナードローしなかった場合に、ラベルの一部分が欠けるという見栄えの
問題がありまして、その解決をするために、オーナードローを試したく考えました。

ピクチャボックス上に表示したラベルは、頻繁に消去できる必要もあります。

調べ方が悪いのか、ネットで調べてもそれらしきページが見つかりませんでした。

ヒントを下されば幸いです。
よろしくお願いします。
引用返信 編集キー/
■3556 / inTopicNo.2)  Re[1]: ピクチャボックス上にラベルをオーナードローしたいです
□投稿者/ keichan (4回)-(2007/05/15(Tue) 13:14:47)
ラベルの親にピクチャーボックスコントロールを指定する。
では、ダメですか?

Label^ label = gcnew Label();
label->Parent = pictureBox;

こうするとオーナードローをする必要もなくなります。
引用返信 編集キー/
■3557 / inTopicNo.3)  Re[2]: ピクチャボックス上にラベルをオーナードローしたいです
□投稿者/ てはては (2回)-(2007/05/15(Tue) 13:47:00)
No3556 (keichan さん) に返信
keichan さん、回答ありがとうございます。
ご指摘の方法で描画することは可能です。ただ、ラベルが近い場合に、一部が欠けるという現象が起こっています。
ピクチャボックスに描画中のビットマップを透過する為に、次のような処理も追加しています。
label->BackColor = Color::Transparent;

目的は、ラベルの一部が欠けないことですので、オーナードローという方法はどうかと考えてご指導を賜りたいと
考えた次第です。

keichan さんのおかげで、目的が不明確な日本語であったことがわかりました。ありがとうございます。

引用返信 編集キー/
■3559 / inTopicNo.4)  Re[3]: ピクチャボックス上にラベルをオーナードローしたいです
□投稿者/ keichan (5回)-(2007/05/15(Tue) 14:03:55)
> 目的は、ラベルの一部が欠けないことですので、
ラベルの一部が欠けないようにするには、
・表示フォントサイズを小さくして表示幅を狭める
・表示位置をずらしてラベルコントロール同士が重ならないように配置する
の2通りが考えられますが

> オーナードローという方法はどうかと考えてご指導を賜りたいと考えた次第です。
オーナードローでどういったことをなさりたいのでしょうか?
引用返信 編集キー/
■3564 / inTopicNo.5)  Re[4]: ピクチャボックス上にラベルをオーナードローしたいです
□投稿者/ てはては (3回)-(2007/05/15(Tue) 15:41:07)
No3559 (keichan さん) に返信
keichanさん、ご回答ありがとうございます。
普通にラベルを表示すると、
+------------------+
| ■■■ |
| ■■■■■ |
| ■■■■■ |
| ■■■■■ |
| ■■■ |
+------------------+
↑↑ ↑↑
の↑のように隙間が生じてしまいます。
ラベル表示位置は、マウスをクリックした所という定義ですので、コントロールは原則重なるものとお考え下さい。
表示幅の調整等で、下記のような状態にはできたのですが、それでも4隅が重なった場合に欠ける症状があります。
+----------+
| ■■■ |
|■■■■■|
|■■■■■|
|■■■■■|
| ■■■ |
+----------+

> オーナードローでどういったことをなさりたいのでしょうか?
上記のようにした場合にも一部が欠ける症状が改善されない為、オーナードローであれば問題解決できるかと思い
質問させて頂きました。

コントロールが本当に重なって、重ねて表示せざるを得ない場所は問題ないのですが、上記の図で4隅の部分は
欠ける必要がない部分であるにも関わらず欠けているように考えます。

日本語にわかりにくい所があり、申し訳ありませんが、ご回答よろしくお願いします。

引用返信 編集キー/
■3566 / inTopicNo.6)  Re[5]: ピクチャボックス上にラベルをオーナードローしたいです
□投稿者/ 渋木宏明(ひどり) (203回)-(2007/05/15(Tue) 16:49:09)
渋木宏明(ひどり) さんの Web サイト
ラベルなんか使わないで、Graphics.DrawText() すればいんじゃないですか?

最大何個のラベルを配置するつもりか知りませんが、10個・20個と使うラベルの数が多くなればなるだけチラツキが見えて見苦しいものになってしまいますよ。

引用返信 編集キー/
■3568 / inTopicNo.7)  Re[6]: ピクチャボックス上にラベルをオーナードローしたいです
□投稿者/ てはては (4回)-(2007/05/15(Tue) 18:27:13)
No3566 (渋木宏明(ひどり) さん) に返信
渋木宏明(ひどり) さん、回答ありがとうございます。

> ラベルなんか使わないで、Graphics.DrawText() すればいんじゃないですか?

説明が後手後手となってしまい、わかりにくくて申し訳ありません。
ラベルを使いたい理由の1つとしまして、コンテキストをつけたいということがあります。

多くの方のアドバイスを頂いておりながら、説明不足の点がありますこと、誠に申し訳ありません。


引用返信 編集キー/
■3569 / inTopicNo.8)  Re[7]: ピクチャボックス上にラベルをオーナードローしたいです
□投稿者/ 渋木宏明(ひどり) (204回)-(2007/05/15(Tue) 19:08:15)
渋木宏明(ひどり) さんの Web サイト
> ラベルを使いたい理由の1つとしまして、コンテキストをつけたいということがあります。

同じことです。

テキストを表示するべき座標と文字列が分かっていれば、その文字列に対応するコンテキストメニューを表示するのは特別難しいことではありません。

2,3件のラベルでそこまで管理するのはいかにも面倒ですが、十数件あるいはそれ以上の文字列を扱う可能性があるなら、独自の管理を検討するべきと思います。

引用返信 編集キー/
■3581 / inTopicNo.9)  Re[8]: ピクチャボックス上にラベルをオーナードローしたいです
□投稿者/ てはては (5回)-(2007/05/16(Wed) 10:04:12)
No3569 (渋木宏明(ひどり) さん) に返信
>>ラベルを使いたい理由の1つとしまして、コンテキストをつけたいということがあります。
>
> 同じことです。
>
> テキストを表示するべき座標と文字列が分かっていれば、その文字列に対応するコンテキストメニューを表示するのは特別難しいことではありません。
>
> 2,3件のラベルでそこまで管理するのはいかにも面倒ですが、十数件あるいはそれ以上の文字列を扱う可能性があるなら、独自の管理を検討するべきと思います。


回答ありがとうございます。
ひどりさんの案で再検討してみようと思います。
またわからないことがあったら教えて下さい。
ありがとうございました。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -