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

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

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

Re[2]: コントロールのフェードin・out効果の考え方


(過去ログ 64 を表示中)

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

■36987 / inTopicNo.1)  コントロールのフェードin・out効果の考え方
  
□投稿者/ hs (69回)-(2009/06/11(Thu) 00:25:13)

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

最近よく目にするのですが、webをはじめ色々なソフト、もちろんVSで開発ツールの中にもあるのですが...
コントロールのフェードイン・アウト効果の考え方(PG)を教えていただけますでしょうか?

たとえばYouTubeのボリュームにマウスがEnterした際、時間差でトラックバーが伸縮する。
画面最大化ボタンにマウスがEnterした際、の四角い部分が収縮する...etc

私自身考えられるのはLoopでheightやwidthを調整する事くらいしか考えつきません。
しかし、この場合スレッドが1本のためコントロールのフェードイン・アウトが終了するまで何も出来ない状態になります。
もちろんマルチスレッドを作れば解決する事ですが。

こんなデザイン上の問題でPGを複雑にするのもどうかと思ってあえて避けているのですが、みなさんはこのようなケースはどのようにしていますか?

引用返信 編集キー/
■36988 / inTopicNo.2)  Re[1]: コントロールのフェードin・out効果の考え方
□投稿者/ Hongliang (418回)-(2009/06/11(Thu) 01:15:25)
タイマ使えばいいんじゃないですか?
// そういうのは大抵既存コントロールなぞ使わず、すべて自前で描画してると思いますけど。

WPF とかならアニメーションで対応することもできますね。
引用返信 編集キー/
■36994 / inTopicNo.3)  Re[1]: コントロールのフェードin・out効果の考え方
□投稿者/ れい (848回)-(2009/06/11(Thu) 03:27:24)
No36987 (hs さん) に返信
> こんなデザイン上の問題でPGを複雑にするのもどうかと思ってあえて避けているのですが、みなさんはこのようなケースはどのようにしていますか?

OSやフレームワークがそういったライブラリを作ってくれてるならそれを使います。
ないならできるだけ避けます。
凝ったGUIは失敗が多いので。

どうしてもやる、となったらいろいろやりようがあります。

投稿内容から判断するに、私なら…

基本的に、WindowsのUIは単スレッドで制御されるようにできていますので、画面制御に複数のスレッドは使いません。
完全に別のタスクを行うフォームなら別スレッドでもいいですが、
そういう場合は別のプロセスにするのが普通なので、やっぱりUIはシングルスレッドです。

標準のコントロールで試し、だめなら自分でコントロールを作成します。
自分できちんとしたコントロールを作るのは結構大変です。

アニメーションの部分は各種レイアウト系メッセージ、ユーザーメッセージ、Idleイベントで処理します。
経過時間はDateTime.Nowから取得します。
WM_TIMERやタイマーコントロールはあまり使いません。
アニメーションは飛ばしてもかまわない要素なので、PCの負荷が高い時は処理が飛ばされるような方向に組みます。


引用返信 編集キー/
■36998 / inTopicNo.4)  Re[1]: コントロールのフェードin・out効果の考え方
□投稿者/ .SHO (871回)-(2009/06/11(Thu) 08:28:12)
> こんなデザイン上の問題でPGを複雑にするのもどうかと思ってあえて避けているのですが、みなさんはこのようなケースはどのようにしていますか?

汎用性があって何度も使いまわせるような部品にするなら作るけど
1回しか使えないなら面倒なので作りません。

引用返信 編集キー/
■36999 / inTopicNo.5)  Re[1]: コントロールのフェードin・out効果の考え方
□投稿者/ よねKEN (351回)-(2009/06/11(Thu) 09:08:36)
Windowsアプリの場合ですが、私ならTimerコントロールを使って制御するくらいですかね。
泥臭い作りになりますが、手間はあまり掛からないので。

引用返信 編集キー/
■37041 / inTopicNo.6)  Re[1]: コントロールのフェードin・out効果の考え方
□投稿者/ biac (125回)-(2009/06/11(Thu) 18:34:30)
biac さんの Web サイト
> たとえばYouTubeのボリュームにマウスがEnterした際、時間差でトラックバーが伸縮する。
> 画面最大化ボタンにマウスがEnterした際、の四角い部分が収縮する...etc

アニメーション効果ですね。
Hongliang さんが書かれたように、 WPF で作るに一票++

なお、 フェードイン/フェードアウトもアニメーション効果ではありますが…
http://dictionary.goo.ne.jp/leaf/ej2/25164/m0u/fade/
/*
fade-in [fade-out]
(音・像が)次第にはっきり[ぼんやり]すること.
*/
無かったところに徐々に出てくるのがフェードイン、 逆に消えていくのがフェードアウトです。
# 年寄りは、ライディーンのおかげでインとアウトを反対に刷り込まれてることがあるので要注意w
引用返信 編集キー/
■37043 / inTopicNo.7)  Re[2]: コントロールのフェードin・out効果の考え方
□投稿者/ biac (126回)-(2009/06/11(Thu) 19:00:56)
biac さんの Web サイト
ちょうど 1年ほど前、 わんくま同盟 東京勉強会 #21 で、 えムナウ さんが 「XAMLの勉強不要! WPFアプリケーションは作れます。」 と題したセッションで、 MouseEnter をトリガーにしてボタンのサイズを変えるというアニメーションを説明してくださってます。 ( 資料 p.35 から )
資料のありか: http://www.wankuma.com/seminar/20080621tokyo21/

Expression Blend というツールを使ってやってますが、 Visual Studio だけでも出来ますよ。
もうじき出てくる .NET 4.0 / VS2010 では、 WPF にもようやくグリッドが標準装備になるなど、 かなり改良されてきますので、 開発はだいぶラクになると思います。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -