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

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

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

Re[10]: ボタンを透明にしたい


(過去ログ 94 を表示中)

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

■56023 / inTopicNo.1)  ボタンを透明にしたい
  
□投稿者/ まっさ (17回)-(2010/12/23(Thu) 13:24:13)

分類:[C#] 

透明ボタンって作れるのでしょうか?
transparentに設定しても、なんか枠だけ残ってしまいます。
枠を消すプロパティが無いような気が・・・

よろしくお願いします。

引用返信 編集キー/
■56024 / inTopicNo.2)  Re[1]: ボタンを透明にしたい
□投稿者/ 上岡勇人 (1回)-(2010/12/23(Thu) 13:30:05)
No56023 (まっさ さん) に返信
> 透明ボタンって作れるのでしょうか?
> transparentに設定しても、なんか枠だけ残ってしまいます。
> 枠を消すプロパティが無いような気が・・・
>
> よろしくお願いします。
>
はいはい。
解決済み
引用返信 編集キー/
■56045 / inTopicNo.3)  Re[1]: ボタンを透明にしたい
□投稿者/ shu (318回)-(2010/12/23(Thu) 22:41:11)
No56023 (まっさ さん) に返信
> 透明ボタンって作れるのでしょうか?
> transparentに設定しても、なんか枠だけ残ってしまいます。
> 枠を消すプロパティが無いような気が・・・
>
> よろしくお願いします。
>
VSに用意されているコントロールではそういうのはないですよ。
透明ボタンにしたい範囲にあるコントロールのクリックイベントをうまく利用すると
できるのではないでしょうか。
引用返信 編集キー/
■56087 / inTopicNo.4)  Re[2]: ボタンを透明にしたい
□投稿者/ borland (1回)-(2010/12/27(Mon) 12:23:17)
No56045 (shu さん) に返信
> ■No56023 (まっさ さん) に返信
>>透明ボタンって作れるのでしょうか?
>>transparentに設定しても、なんか枠だけ残ってしまいます。
>>枠を消すプロパティが無いような気が・・・
>>
>>よろしくお願いします。
>>
> VSに用意されているコントロールではそういうのはないですよ。
> 透明ボタンにしたい範囲にあるコントロールのクリックイベントをうまく利用すると
> できるのではないでしょうか。


<asp:Button ID="Button1" runat="server" Style="filter: alpha(opacity=10)" Text="Button" />
警告出るけど 細かいことは気にするな。
opacity=0 で完全に透明。。何に使うかは聞かないことにする。

引用返信 編集キー/
■56092 / inTopicNo.5)  Re[1]: ボタンを透明にしたい
□投稿者/ Mira (15回)-(2010/12/27(Mon) 12:34:09)
ゆーざーには押されたくないけどJavaScriptでは押したいとかそういう目的ですか?

それならStyleSheetのvisibilityプロパティ等でいかがでしょうか?

半透明にしたいのであればブラウザによってコードが違うので以下の3つを併記ですかね
filter:alpha(opacity=70);
opacity:0.7;
-moz-opacity:0.3;
引用返信 編集キー/
■56095 / inTopicNo.6)  Re[2]: ボタンを透明にしたい
□投稿者/ まっさ (22回)-(2010/12/27(Mon) 12:47:52)
みなさんお返事ありがとうございます。

ASP.NETでは無くWindowsフォームアプリケーションで透明にしたいと
思っています。

よろしくお願い致します。


引用返信 編集キー/
■56098 / inTopicNo.7)  Re[3]: ボタンを透明にしたい
□投稿者/ shu (327回)-(2010/12/27(Mon) 13:08:58)
No56095 (まっさ さん) に返信
> みなさんお返事ありがとうございます。
>
> ASP.NETでは無くWindowsフォームアプリケーションで透明にしたいと
> 思っています。
Windows Formのつもりでコメントしてますが。Accessの透明ボタンを想像。

たとえばボタンの矩形内に他のコントロールが交わることなく含まれているとして
ボタンをPanelとして配置しその中に矩形内のすべてのコントロールを配置し
そのコントロールのすべてのClickイベントを同じにすれば透明ボタンぽくなると
思います。
引用返信 編集キー/
■56099 / inTopicNo.8)  Re[4]: ボタンを透明にしたい
□投稿者/ borland (2回)-(2010/12/27(Mon) 13:42:25)
No56098 (shu さん) に返信
> ■No56095 (まっさ さん) に返信
>>みなさんお返事ありがとうございます。
>>
>>ASP.NETでは無くWindowsフォームアプリケーションで透明にしたいと
>>思っています。
> Windows Formのつもりでコメントしてますが。Accessの透明ボタンを想像。
>
> たとえばボタンの矩形内に他のコントロールが交わることなく含まれているとして
> ボタンをPanelとして配置しその中に矩形内のすべてのコントロールを配置し
> そのコントロールのすべてのClickイベントを同じにすれば透明ボタンぽくなると
> 思います。

失礼しました。
SetWindowLong(Handle, GWL_EXSTYLE,
GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);

SetLayeredWindowAttributes(Handle, 0, 120, LWA_ALPHA);

APIでできませんか?
試してないけど。


引用返信 編集キー/
■56100 / inTopicNo.9)  Re[5]: ボタンを透明にしたい
□投稿者/ とっちゃん (558回)-(2010/12/27(Mon) 14:37:23)
とっちゃん さんの Web サイト
No56099 (borland さん) に返信

> 失礼しました。
> SetWindowLong(Handle, GWL_EXSTYLE,
> GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
>
> SetLayeredWindowAttributes(Handle, 0, 120, LWA_ALPHA);
>
> APIでできませんか?
> 試してないけど。
>
見えないだけでいいなら、オーナードローにして何もしない
という方法もありますが、それはだめ?

引用返信 編集キー/
■56101 / inTopicNo.10)  Re[6]: ボタンを透明にしたい
□投稿者/ やじゅ (1799回)-(2010/12/27(Mon) 18:18:20)
やじゅ さんの Web サイト
>透明ボタンって作れるのでしょうか?

クリックイベントだけ動作すればいいなら、Buttonコントロールはやめて
PictureBoxコントロールにしては駄目ですか?

引用返信 編集キー/
■56102 / inTopicNo.11)  Re[7]: ボタンを透明にしたい
□投稿者/ まっさ (24回)-(2010/12/27(Mon) 19:14:44)
おおったくさんのコメントが・・・助かります!

色々な方法があるものですね。今回の件は単純にPictureBoxのクリックイベントで
代用できそうです。 ボタンにこだわることは無かったんだ。

他の方法も興味があります。 今後の勉強の為に色々と試してみようと思います。
とりあえず解決はしましたので、解決済みに致します。

ありがとうございました。
解決済み
引用返信 編集キー/
■56106 / inTopicNo.12)  Re[8]: ボタンを透明にしたい
□投稿者/ shu (328回)-(2010/12/28(Tue) 08:06:27)
No56102 (まっさ さん) に返信

> 色々な方法があるものですね。今回の件は単純にPictureBoxのクリックイベントで
> 代用できそうです。 ボタンにこだわることは無かったんだ。
PictureBoxで出来ることだったんですね。コントロールがたくさん並んでいてその上に
ボタンを置いて後ろのコントロールを見えるようにするというを想像してたんですが、
そういうことではなかったようで。それともこのことがPictureBoxで出来るのでしょうか?
逆に知りたいです。
解決済み
引用返信 編集キー/
■56108 / inTopicNo.13)  Re[9]: ボタンを透明にしたい
□投稿者/ 魔界の仮面弁士 (2001回)-(2010/12/28(Tue) 10:00:04)
No56023 (まっさ さん) に返信
> 透明ボタンって作れるのでしょうか?
> transparentに設定しても、なんか枠だけ残ってしまいます。
> 枠を消すプロパティが無いような気が・・・
枠だけの問題なら、Region プロパティで切り取ってしまうという手も。



No56099 (borland さん) に返信
> SetWindowLong(Handle, GWL_EXSTYLE,
> GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
> SetLayeredWindowAttributes(Handle, 0, 120, LWA_ALPHA);
> APIでできませんか?
ウィンドウに半透明効果を追加しようという意図かと思いますが、
レイヤードウィンドウはトップレベルウィンドウを対象にしているので、
「TopLevel = true な Form」には使えますが、それ以外の Control には
使えないはずです。

仮に、元のフォームの手前に透明フォームを表示しておくような意図だとしても、
上記の処理は『form2.Opacity = 120.0 / 255.0;』というコードで表せますので、
API の出番は無いはずです。グラデーションのかかった半透明化などでは必要ですが。
http://www.ipentec.com/document/document.aspx?page=csharp-winform-layerd-window-create


No56106 (shu さん) に返信
> ボタンを置いて後ろのコントロールを見えるようにするというを想像してたんですが、
既存のコントロール群の上に透明のシートをかぶせるようなイメージでしょうか。
マウスやタブレット操作に限定してよければ、Microsoft.Ink.InkOverlay クラスを被せておき、
そちらのイベントで制御する手もあります。
 inkOverlay1 = new Microsoft.Ink.InkOverlay();
 inkOverlay1.AttachedControl = this;
 inkOverlay1.AttachMode = InkOverlayAttachMode.InFront;
 inkOverlay1.DynamicRendering = false;
 inkOverlay1.EditingMode = InkOverlayEditingMode.Ink;
 inkOverlay1.Enabled = true;
 //イベントとしては、Stroke, NewPackets, NewInAirPackets 等


> そういうことではなかったようで。それともこのことがPictureBoxで出来るのでしょうか?
できないのでは無いでしょうか。背面にあるコントロールの描画処理を PictureBox 側で
肩代わりするような実装にできれば表現できそうですが、汎用的にする方法を思いつきません。

先のレイヤード ウィンドウ案でいくならば、透明度の高い別フォームを
TopMost = true、ShowInTaskbar = false で用意し、それを手前においておくという
方法もあるかと思います。この場合、手前の透明フォームがアクティブ化すると邪魔なので、
CreateParams をオーバーライドして、WS_EX_NOACTIVATE を加えるなどの対処が必要かも。
解決済み
引用返信 編集キー/
■56110 / inTopicNo.14)  Re[10]: ボタンを透明にしたい
□投稿者/ shu (329回)-(2010/12/28(Tue) 12:06:26)
2010/12/28(Tue) 12:06:42 編集(投稿者)

No56108 (魔界の仮面弁士 さん) に返信

コメントありがとうございます。

> ■No56106 (shu さん) に返信
>>ボタンを置いて後ろのコントロールを見えるようにするというを想像してたんですが、
> 既存のコントロール群の上に透明のシートをかぶせるようなイメージでしょうか。
> マウスやタブレット操作に限定してよければ、Microsoft.Ink.InkOverlay クラスを被せておき、
> そちらのイベントで制御する手もあります。
>  inkOverlay1 = new Microsoft.Ink.InkOverlay();
>  inkOverlay1.AttachedControl = this;
>  inkOverlay1.AttachMode = InkOverlayAttachMode.InFront;
>  inkOverlay1.DynamicRendering = false;
>  inkOverlay1.EditingMode = InkOverlayEditingMode.Ink;
>  inkOverlay1.Enabled = true;
>  //イベントとしては、Stroke, NewPackets, NewInAirPackets 等
そんなイメージです。Inkを使うとそういうことが出来るんですね。今度試してみようと思います。


>>そういうことではなかったようで。それともこのことがPictureBoxで出来るのでしょうか?
> できないのでは無いでしょうか。背面にあるコントロールの描画処理を PictureBox 側で
> 肩代わりするような実装にできれば表現できそうですが、汎用的にする方法を思いつきません。
やはり難しそうですね。


> 先のレイヤード ウィンドウ案でいくならば、透明度の高い別フォームを
> TopMost = true、ShowInTaskbar = false で用意し、それを手前においておくという
> 方法もあるかと思います。この場合、手前の透明フォームがアクティブ化すると邪魔なので、
> CreateParams をオーバーライドして、WS_EX_NOACTIVATE を加えるなどの対処が必要かも。
別フォームですか。なんかいろいろ制御(サイズとか位置など)が大変そうな気がします。

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -