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

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

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

Re[5]: フォーム上の特定のコントロールのみ不透明に


(過去ログ 96 を表示中)

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

■57459 / inTopicNo.1)  フォーム上の特定のコントロールのみ不透明に
  
□投稿者/ ken (7回)-(2011/02/28(Mon) 11:04:39)

分類:[.NET 全般] 

VC++ 2010 Expressでフォームアプリケーションを作成しています。
ここで、フォームのOpacityを変更することで、フォームとそこに配置されたコントロールの透明度を変更できます。ここで、配置されたコントロールの内、一部のみを不透明にし、残りは透明とすることは可能でしょうか?
引用返信 編集キー/
■57461 / inTopicNo.2)  Re[1]: フォーム上の特定のコントロールのみ不透明に
□投稿者/ shu (482回)-(2011/02/28(Mon) 14:59:32)
2011/02/28(Mon) 14:59:51 編集(投稿者)

No57459 (ken さん) に返信

FormのTransparencyKeyに指定した色は透過されますが、そういうことではないですか?
引用返信 編集キー/
■57462 / inTopicNo.3)  Re[2]: フォーム上の特定のコントロールのみ不透明に
□投稿者/ ken (8回)-(2011/02/28(Mon) 17:06:11)
> FormのTransparencyKeyに指定した色は透過されますが、そういうことではないですか?

 現状白色がこのTransparencyKeyに設定されているようです。

 行いたいのは、Formに配置した特定のラベルとコンボボックスのみ不透明にしたいのです。しかし、色で指定されると言うことは、同じ色を使用しているコントロールであれば、同時に透明化されてしまうのでしょうか。
引用返信 編集キー/
■57463 / inTopicNo.4)  Re[3]: フォーム上の特定のコントロールのみ不透明に
□投稿者/ shu (483回)-(2011/02/28(Mon) 17:16:28)
No57462 (ken さん) に返信
>  現状白色がこのTransparencyKeyに設定されているようです。
何も設定していなければ、白ではないです。

>
>  行いたいのは、Formに配置した特定のラベルとコンボボックスのみ不透明にしたいのです。しかし、色で指定されると言うことは、同じ色を使用しているコントロールであれば、同時に透明化されてしまうのでしょうか。

このやり方が正しいとして、TransparencyKeyは他で使わない色に設定しておいて、透明にしない部分はそのまま、透明にする部分はTransparencyKeyと同じ色にすればいいです。
引用返信 編集キー/
■57464 / inTopicNo.5)  Re[4]: フォーム上の特定のコントロールのみ不透明に
□投稿者/ ken (9回)-(2011/02/28(Mon) 17:24:32)
2011/02/28(Mon) 17:42:48 編集(投稿者)

 すみません。言い忘れたことがあります。透明と書きましたが、正確には半透明です。

 つまり、今の状態ですと乗っているコントロールに限らず、FormのOpacityを変えることで、上に乗っている全てのコントロールの透明度(つまり半透明〜不透明)を同時に変えています。しかし、コンボボックスと特定のラベルは半透明としたくないのです。

ところで、C#ですが、こんなページがありました。これは参考になりそうですが、C++へ翻訳する必要あります。

http://rockmanjuno.blogspot.com/2009/12/blog-post.html
引用返信 編集キー/
■57466 / inTopicNo.6)  Re[5]: フォーム上の特定のコントロールのみ不透明に
□投稿者/ shu (484回)-(2011/02/28(Mon) 17:50:49)
No57464 (ken さん) に返信
> 2011/02/28(Mon) 17:42:48 編集(投稿者)
>
>  すみません。言い忘れたことがあります。透明と書きましたが、正確には半透明です。
>
>  つまり、今の状態ですと乗っているコントロールに限らず、FormのOpacityを変えることで、上に乗っている全てのコントロールの透明度(つまり半透明〜不透明)を同時に変えています。しかし、コンボボックスと特定のラベルは半透明としたくないのです。
>
> ところで、C#ですが、こんなページがありました。これは参考になりそうですが、C++へ翻訳する必要あります。
>
> http://rockmanjuno.blogspot.com/2009/12/blog-post.html

Formを分けて表示するという方法になりますね。トップレベルでないとOpacityがきかないので独立して表示し
移動、リサイズ、クローズを同期させているようです。
引用返信 編集キー/
■57470 / inTopicNo.7)  Re[6]: フォーム上の特定のコントロールのみ不透明に
□投稿者/ ken (10回)-(2011/02/28(Mon) 20:24:34)
> Formを分けて表示するという方法になりますね。トップレベルでないとOpacityがきかないので独立して表示し
> 移動、リサイズ、クローズを同期させているようです。

以下の部分、C++に翻訳願えませんか。

this.title_label.Text = this.Text;
this.title_label.MouseDown += new MouseEventHandler( Form1_MouseDown );
this.title_label.MouseMove += new MouseEventHandler( Form1_MouseMove );

this.fm2 = new Form2();
this.fm2.FormClosing += new FormClosingEventHandler( fm2_FormClosing );
this.AddOwnedForm( fm2 );

this.fm2.Width = this.Width - 40;
this.fm2.Height = this.Height - 60;

this.fm2.Show();
this.fm2.Left = this.Left + 20;
this.fm2.Top = this.Top + 40;

引用返信 編集キー/
■57471 / inTopicNo.8)  Re[7]: フォーム上の特定のコントロールのみ不透明に
□投稿者/ Azulean (696回)-(2011/02/28(Mon) 22:11:40)
No57470 (ken さん) に返信
> 以下の部分、C++に翻訳願えませんか。

C++/CLI ですよね。とっかかりもわからない状態でしょうか?
正直なところ、C++/CLI の書き方を学んで C# のサンプルから書き換えできるスキルを身につけないと、今後厳しいと思います。

部分的にそれらしいコードに書き換えたものを以下に載せますが、コンパイルは試していません。
あとは応用で何とかなりませんか?

this->title_label->Text = this->Text;
this->title_label->MouseDown += gcnew MouseEventHandler(this, &Form1::Form1_MouseDown);

this->fm2 = gcnew Form2();
this->AddOwnedForm(fm2);
引用返信 編集キー/
■57474 / inTopicNo.9)  Re[8]: フォーム上の特定のコントロールのみ不透明に
□投稿者/ ken (12回)-(2011/02/28(Mon) 23:00:17)
ありがとうございます。

> this->title_label->Text = this->Text;
> this->title_label->MouseDown += gcnew MouseEventHandler(this, &Form1::Form1_MouseDown);
>
> this->fm2 = gcnew Form2();
> this->AddOwnedForm(fm2);

 これは理解できるのですが、例えば、title_labelが何を意図したものだとか、わかってないんです。どうやら言語以前の問題ですね。例えば上記部分をForm_Loadに書いても、コンパイルエラーが出るわけで。(title_labelはクラスのメンバーとして見あたらない。)
引用返信 編集キー/
■57475 / inTopicNo.10)  Re[9]: フォーム上の特定のコントロールのみ不透明に
□投稿者/ shu (486回)-(2011/02/28(Mon) 23:20:03)
No57474 (ken さん) に返信

>  これは理解できるのですが、例えば、title_labelが何を意図したものだとか、わかってないんです。どうやら言語以前の問題ですね。例えば上記部分をForm_Loadに書いても、コンパイルエラーが出るわけで。(title_labelはクラスのメンバーとして見あたらない。)
title_labelはタイトルバーの代わりにラベルを張り付けたのだと思います。タイトルバーが非表示のスタイルになっているということです。
引用返信 編集キー/
■57476 / inTopicNo.11)  Re[5]: フォーム上の特定のコントロールのみ不透明に
□投稿者/ 魔界の仮面弁士 (2115回)-(2011/03/01(Tue) 00:37:33)
No57464 (ken さん) に返信
>  つまり、今の状態ですと乗っているコントロールに限らず、FormのOpacityを変えることで、
> 上に乗っている全てのコントロールの透明度(つまり半透明〜不透明)を同時に変えています。
> しかし、コンボボックスと特定のラベルは半透明としたくないのです。

UpdateLayeredWindow API で ULW_ALPHA を指定すれば、
透明部分と半透明部分と不透明部分とをピクセル単位で指定できますよ。

以下、C++ のコードではありませんが参考までに。
http://youryella.wankuma.com/Library/Extensions/Form/LayeredWindow.aspx
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -