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

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

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

Re[19]: コントロールの表示速度について [1]


(過去ログ 85 を表示中)

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

■51058 / inTopicNo.21)  Re[8]: コントロールの表示速度について
  
□投稿者/ 裕猫 (133回)-(2010/06/24(Thu) 09:27:29)
分割してアップしてます。続き3
//--------------------------------------------------------------------------------------タイトル
private void Opening() //------------------------------------------------オープニング画面表示
{
AllRemove(); //---------------------------------------------ここで全コントロール一気にはずす
CG("背景\\Green.png", "キャラ\\タイトル.png", 380, 0);
GVM.OnseiClass.Koe1("声\\Opening.wav");
TitleAD(); //------------------------------------------------タイトルのコントロールを付ける

if (JishoRead() == false) { Owari.Focus(); } else { GakunenTX.Focus(); }
SimeiTX.ImeMode = ImeMode.Hiragana;
}

private void Kaisi_Click(object sender, EventArgs e) //-----------メインの処理
{
if (ListCheck() == false) { return; }
Namae = "辞書\\" + GakunenTX.Text.Trim() + UTTX.Text.Trim() + KoumokuTX.Text.Trim() + ".qst";
if (QuestionRead() == false) { return; }
if (SimeiTX.Text.Trim().Length == 0) { SimeiTX.Focus(); return; }
AllRemove(); //---------------------------------------------ここで全コントロール一気にはずす
ShutudaiAD(); //----------------------------------------------メインのコントロールを付ける
LevelLabel.Text = KoumokuTX.Text;
TitleLabel2.Text = GakunenTX.Text + " " + UTTX.Text;
Seikai = 0;
Count = 0;
Mondaihyouji(Mondai[0]);
}

引用返信 編集キー/
■51059 / inTopicNo.22)  Re[9]: コントロールの表示速度について
□投稿者/ 裕猫 (134回)-(2010/06/24(Thu) 09:30:11)
分割してアップしてます。続き4
private void GakunenTX_SelectedIndexChanged(object sender, EventArgs e)
{              //---------コンボボックスの内容をコンボボックスGakunenTXの内容で決定
switch (GakunenTX.Text)
{
case "LV1":
UTTX.Items.Clear();
UTTX.Items.Add("HE");
UTTX.Items.Add("UT1");
UTTX.Items.Add("UT2");
UTTX.Items.Add("UT3");
UTTX.Items.Add("UT3SP");
UTTX.Items.Add("UT4");
UTTX.Items.Add("UT4SP");
UTTX.Items.Add("UT5");
UTTX.Items.Add("UT6");
UTTX.Items.Add("UT6SP");
UTTX.Items.Add("UT7");
UTTX.Items.Add("UT8");
UTTX.Items.Add("UT9");
UTTX.Items.Add("UT9SP");
UTTX.Items.Add("UT10");
UTTX.Items.Add("UT10SP");
UTTX.Items.Add("UT11");
UTTX.Items.Add("UT11LR");
break;
case "LV2":
UTTX.Items.Clear();
UTTX.Items.Add("ASAAG");
UTTX.Items.Add("UT1");
UTTX.Items.Add("UT2");
UTTX.Items.Add("UT2SP");
UTTX.Items.Add("UT3");
UTTX.Items.Add("UT3LR");
UTTX.Items.Add("UT4");
UTTX.Items.Add("UT4SP");
UTTX.Items.Add("UT5");
UTTX.Items.Add("UT5SP");
UTTX.Items.Add("UT6");
UTTX.Items.Add("UT6SP");
UTTX.Items.Add("UT6LR");
UTTX.Items.Add("UT7");
UTTX.Items.Add("UT7SP");
UTTX.Items.Add("UT7LR");
break;
case "LV3":
UTTX.Items.Clear();
UTTX.Items.Add("ASAAG");
UTTX.Items.Add("UT1");
UTTX.Items.Add("UT2");
UTTX.Items.Add("UT3");
UTTX.Items.Add("UT3SP1");
UTTX.Items.Add("UT3LR");
UTTX.Items.Add("UT3SP2");
UTTX.Items.Add("UT4");
UTTX.Items.Add("UT4SP");
UTTX.Items.Add("UT5");
UTTX.Items.Add("UT6");
UTTX.Items.Add("UT6SP");
UTTX.Items.Add("UT6LR1");
UTTX.Items.Add("UT6LR2");
break;
default:
UTTX.Items.Clear();
break;
}
UTTX.Focus();
}

引用返信 編集キー/
■51060 / inTopicNo.23)  Re[10]: コントロールの表示速度について
□投稿者/ 裕猫 (135回)-(2010/06/24(Thu) 09:32:34)
分割してアップしてます。続き5
private void UTTX_SelectedIndexChanged(object sender, EventArgs e) //------------------UT選択
{
KoumokuTX.Focus();
}

private void KoumokuTX_SelectedIndexChanged(object sender, EventArgs e) //------------項目選択
{
SimeiTX.Focus();
}

private void SimeiTX_KeyPress(object sender, KeyPressEventArgs e) //-------------------名前入力
{
if (e.KeyChar == (char)Keys.Enter)
{
e.Handled = true;
SeitoMei = SimeiTX.Text.Trim();
Kaisi.Focus();
}

}

private void Owari_Click(object sender, EventArgs e) //------------------------------終了ボタン
{
AllRemove(); //---------------------------------------------ここで全コントロール一気にはずす
CG("背景\\Blue.png", "キャラ\\終了.png", 200, 0);
GVM.OnseiClass.Koe1("声\\Ending.wav");
timer1.Enabled = true;
timer1.Interval = 3000;
}

private void timer1_Tick(object sender, EventArgs e) //-----------------------終了時タイマー処理
{
this.Close();
}

引用返信 編集キー/
■51062 / inTopicNo.24)  Re[11]: コントロールの表示速度について
□投稿者/ 裕猫 (136回)-(2010/06/24(Thu) 09:33:50)
分割してアップしてます。続き6
//---------------------------------------------------------------------------------項目列挙
private void AllRemove() //---------------------------------------------コントロール全削除
{
this.SuspendLayout();
this.Controls.Remove(TitlLabel);
this.Controls.Remove(TitleLabel2);
this.Controls.Remove(LevelLabel);
this.Controls.Remove(GakunenLabel);
this.Controls.Remove(GakunenTX);
this.Controls.Remove(UTLabel);
this.Controls.Remove(UTTX);
this.Controls.Remove(KoumokuLabel);
this.Controls.Remove(KoumokuTX);
this.Controls.Remove(Kaisi);
this.Controls.Remove(MondaiSakusei);
this.Controls.Remove(NamaeLabel);
this.Controls.Remove(SimeiTX);
this.Controls.Remove(Owari);
this.Controls.Remove(ShutudaiTX);
this.Controls.Remove(KotaeLabel);
this.Controls.Remove(KaitouTX);

this.Controls.Remove(SeikaiLabel);
this.Controls.Remove(SeikaiTX);
this.Controls.Remove(Ryoukai);
this.Controls.Remove(Chuusi);

this.Controls.Remove(Sakujo);
this.Controls.Remove(Shuusei);
this.Controls.Remove(TangoEibun);
this.Controls.Remove(EnglishTX);
this.Controls.Remove(HinsiLabel);
this.Controls.Remove(HinsiTX);
this.Controls.Remove(WayakuLabel);
this.Controls.Remove(JapaneseTX);
this.Controls.Remove(Tourokuzumi);
this.Controls.Remove(TourokuWard);
this.Controls.Remove(Modoru);

this.Controls.Remove(TokutenTX);
this.Controls.Remove(SaiBTN);
this.Controls.Remove(YasumiBTN);
this.ResumeLayout();
}

引用返信 編集キー/
■51063 / inTopicNo.25)  Re[12]: コントロールの表示速度について
□投稿者/ 裕猫 (137回)-(2010/06/24(Thu) 09:35:32)
分割してアップしてます。続き7
private void TitleAD() //------------------------タイトル画面コントロール追加
{
this.SuspendLayout();
this.Controls.Add(TitlLabel.Visible);
this.Controls.Add(SimeiTX.Visible);
this.Controls.Add(GakunenLabel.Visible);
this.Controls.Add(GakunenTX.Visible);
this.Controls.Add(UTLabel.Visible);
this.Controls.Add(UTTX.Visible);
this.Controls.Add(KoumokuLabel.Visible);
this.Controls.Add(KoumokuTX.Visible);
this.Controls.Add(Kaisi.Visible);
this.Controls.Add(NamaeLabel.Visible);
this.Controls.Add(MondaiSakusei.Visible);
this.Controls.Add(Owari.Visible);
this.ResumeLayout();
}

private void HenshuuAD() //------------------------編集画面コントロール追加
{
this.SuspendLayout();
this.Controls.Add(LevelLabel);
this.Controls.Add(TitleLabel2);
this.Controls.Add(TangoEibun);
this.Controls.Add(EnglishTX);
this.Controls.Add(HinsiLabel);
this.Controls.Add(HinsiTX);
this.Controls.Add(WayakuLabel);
this.Controls.Add(JapaneseTX);
this.Controls.Add(Tourokuzumi);
this.Controls.Add(TourokuWard);
this.Controls.Add(Shuusei);
this.Controls.Add(Sakujo);
this.Controls.Add(Modoru);
this.ResumeLayout();
}

引用返信 編集キー/
■51064 / inTopicNo.26)  Re[13]: コントロールの表示速度について
□投稿者/ 裕猫 (138回)-(2010/06/24(Thu) 09:36:32)
分割してアップしてます。続き8最後です。
private void Form1_Paint(object sender, PaintEventArgs e)
{
IllustClass.Paint(Haikei, Hito, Iti, Takasa, e.Graphics);
}

private void CG(string Ha, string Hi, int XX, int YY)
{
Haikei = Ha;
Hito = Hi;
Iti = XX;
Takasa = YY;
this.Invalidate();
}
}
}

引用返信 編集キー/
■51066 / inTopicNo.27)  Re[7]: コントロールの表示速度について
□投稿者/ 渋木宏明(ひどり) (1375回)-(2010/06/24(Thu) 09:48:34)
渋木宏明(ひどり) さんの Web サイト
>コードですが、昨日から5回送っているのですがどうしてもUPされません。

SkyDrive とかに置いて、URL を書いてもらうんでもおkです。

で、せっかく頑張ってアップしてくれたソースですが、デザイナコードがないのでこれだけじゃコンパイル通らないです。

申し訳ないけど、まるっと全部読む気はないので、問題が再現できる最小限(=ゲーム?のロジックは不要です)の、ビルド&実行することが可能な状態のソースコード一式を下さい。



引用返信 編集キー/
■51067 / inTopicNo.28)  Re[8]: コントロールの表示速度について
□投稿者/ 渋木宏明(ひどり) (1376回)-(2010/06/24(Thu) 09:49:37)
渋木宏明(ひどり) さんの Web サイト
> 自分であれば、7種類のパネル( Panel )を用意して、その上にコントロールを配置します。

ユーザーコントロールにするとかね。
その上で、必要ならアプリケーション実装に必要なインターフェースもくっつけます。

引用返信 編集キー/
■51068 / inTopicNo.29)  Re[14]: コントロールの表示速度について
□投稿者/ 裕猫 (139回)-(2010/06/24(Thu) 09:51:39)
ようやくアップできました。1〜8までをあわせるとオープニングまでの動作ができます。using GVMは合成画像表示、音声、音楽を鳴らすためのオリジナルプログラムで
CGで指定して使ったりします。ラベルの文字色、背景色半透明処理の指定は private void Form1_Load(object sender, EventArgs e)でやってprivate void AllRemove()で一気にはずし、private void TitleAD()、private void HenshuuAD()等でその都度必要なものを追加します。
ラベルの文字色、背景色半透明処理の指定は最初プロパティで設定し、プログラムでは書かなかったのですが、XP とVistaで動作確認したときXPは白文字半透明で正常だったのにVistaでは黒文字半透明になってしまったのでそれ以来プログラムで指定するようになりました。
これを動かすとボタンやテキストボックスなどはすぐ出てきますが、そのあとのラベルの半透明処理がゆっくり1つずつ1〜2秒くらいかけて変わっていきます。そこが見ていて気に障ります。早いCPUのマシンならあまり気になりませんが使用機器がpen4やセレロン使用のWindows2000なので困っています。よろしくお願いいたします。
引用返信 編集キー/
■51074 / inTopicNo.30)  Re[8]: コントロールの表示速度について
□投稿者/ 裕猫 (140回)-(2010/06/24(Thu) 12:50:59)
No51066 (渋木宏明(ひどり) さん) に返信
> 申し訳ないけど、まるっと全部読む気はないので、問題が再現できる最小限(=ゲーム?のロジックは不要です)の、ビルド&実行することが可能な状態のソースコード一式を下さい。
>
そちらで実行できるソースコードにするためGVMをぬいたソースに修正していたら原因がしぼれてきました。GVM抜いてCGの合成表示ロジック抜いたら現象が消えました。
つーことはCGの合成表示がコントロールの表示を遅らせる原因に間違いないですが、さてどうやって回避しようかこれから考えます。GVMはPNG画像を2枚重ねてg.DrawImageで表示するだけなものですがその辺になにかありそうなので調べてみます。
引用返信 編集キー/
■51075 / inTopicNo.31)  Re[15]: コントロールの表示速度について
□投稿者/ よねKEN (531回)-(2010/06/24(Thu) 13:00:47)
よねKEN さんの Web サイト
SuspendLayout/ResumeLayoutの挟み方がよくないような。

Openingメソッド/Kaisi_Clickメソッドで、最初にSuspendLayout、最後にResumeLayoutをしたらどうでしょう?
(これを試すときは、AllRemoveメソッドやTitleADメソッドなどの
SuspendLayout/ResumeLayoutの呼び出しはコメントアウトしてください)
引用返信 編集キー/
■51079 / inTopicNo.32)  Re[16]: コントロールの表示速度について
□投稿者/ 裕猫 (141回)-(2010/06/24(Thu) 14:01:30)
No51075 (よねKEN さん) に返信
> SuspendLayout/ResumeLayoutの挟み方がよくないような。
>
> Openingメソッド/Kaisi_Clickメソッドで、最初にSuspendLayout、最後にResumeLayoutをしたらどうでしょう?
> (これを試すときは、AllRemoveメソッドやTitleADメソッドなどの
> SuspendLayout/ResumeLayoutの呼び出しはコメントアウトしてください)
ありがとうございます。指示どうりメソッドで、最初にSuspendLayout、最後にResumeLayoutしてみましたが、同じでした。やはりGVDが原因という線が強くなっています。今CGをはずしたものを作成しています。それで解消すればGVDを作り直しということになりますね。 苦労して作ったのに悲しいです。
引用返信 編集キー/
■51081 / inTopicNo.33)  Re[17]: コントロールの表示速度について
□投稿者/ 裕猫 (142回)-(2010/06/24(Thu) 14:22:07)
CGをはずしたものを作成して試したところ動作okでした。原因はGVDの中のCG透過合成処理が影響しているからでした。GVDを作り直しということになりますね。 苦労して作ったのに悲しいです。
とりあえず大元までではないですが原因が判明しましたのでこれで解決といたします。みなさんいろいろご指導ありがとうございました。またグラフィック系でお尋ねするかもしれませんがそのときはまたよろしくお願いいたします。m(_ _)m
解決済み
引用返信 編集キー/
■51097 / inTopicNo.34)  Re[18]: コントロールの表示速度について
□投稿者/ よねKEN (532回)-(2010/06/24(Thu) 20:15:55)
よねKEN さんの Web サイト
No51081 (裕猫 さん) に返信
> CGをはずしたものを作成して試したところ動作okでした。原因はGVDの中のCG透過合成処理が影響しているからでした。GVDを作り直しということになりますね。 苦労して作ったのに悲しいです。
> とりあえず大元までではないですが原因が判明しましたのでこれで解決といたします。みなさんいろいろご指導ありがとうございました。またグラフィック系でお尋ねするかもしれませんがそのときはまたよろしくお願いいたします。m(_ _)m

以下のコードの処理順ですが、

> AllRemove(); //---------------------------------------------ここで全コントロール一気にはずす
> CG("背景\\Green.png", "キャラ\\タイトル.png", 380, 0);
> GVM.OnseiClass.Koe1("声\\Opening.wav");
> TitleAD(); //------------------------------------------------タイトルのコントロールを付ける


CG("背景\\Green.png", "キャラ\\タイトル.png", 380, 0);
GVM.OnseiClass.Koe1("声\\Opening.wav");
AllRemove(); //---------------------------------------------ここで全コントロール一気にはずす
TitleAD(); //------------------------------------------------タイトルのコントロールを付ける

もしくは、

AllRemove(); //---------------------------------------------ここで全コントロール一気にはずす
TitleAD(); //------------------------------------------------タイトルのコントロールを付ける
CG("背景\\Green.png", "キャラ\\タイトル.png", 380, 0);
GVM.OnseiClass.Koe1("声\\Opening.wav");

ではダメなんでしょうか?
コントロールを削除してから追加する間の処理が長いのが原因じゃないの?と想像しているので。

解決済み
引用返信 編集キー/
■51108 / inTopicNo.35)  Re[19]: コントロールの表示速度について
□投稿者/ 裕猫 (143回)-(2010/06/25(Fri) 08:33:42)
No51097 (よねKEN さん) に返信
> 以下のコードの処理順ですが、
>
>>AllRemove(); //---------------------------------------------ここで全コントロール一気にはずす
>>CG("背景\\Green.png", "キャラ\\タイトル.png", 380, 0);
>>GVM.OnseiClass.Koe1("声\\Opening.wav");
>>TitleAD(); //------------------------------------------------タイトルのコントロールを付ける
>
>
> CG("背景\\Green.png", "キャラ\\タイトル.png", 380, 0);
> GVM.OnseiClass.Koe1("声\\Opening.wav");
> AllRemove(); //---------------------------------------------ここで全コントロール一気にはずす
> TitleAD(); //------------------------------------------------タイトルのコントロールを付ける
>
> もしくは、
>
> AllRemove(); //---------------------------------------------ここで全コントロール一気にはずす
> TitleAD(); //------------------------------------------------タイトルのコントロールを付ける
> CG("背景\\Green.png", "キャラ\\タイトル.png", 380, 0);
> GVM.OnseiClass.Koe1("声\\Opening.wav");
>
> ではダメなんでしょうか?
> コントロールを削除してから追加する間の処理が長いのが原因じゃないの?と想像しているので。
この並べ替えは最初にやっていましてやはりだめでした。 でCGの表示が原因ということであちこち調べていましたら、
private void Form1_Paint(object sender, PaintEventArgs e) がコントロールをつけたりはずしたりする度に再描画をする動きをするというMSDNの内容を発見(アドレスメモし忘れた) で考えると今回の現象と一致するんですね。これ。TitleAD()で複数個一気に処理するとコントロール1個表示するごとにForm1_PaintがCG書き直す。ダブルバッファリング使っているのでCGはちらつきませんがCG書き換えしている時間次のコントロールの表示処理が止まるので順順にかわっていくように見える。
試しに1フォーム1レイアウトの画面を作ってみましたがコントロールつけはずしなしで最初の画面表示がやはりコントロールが順順に変わっていきましたのでマルチフォームでも現象は出てしまうことが判明。
Form1_Paintは他のウィンドウが重なった後CGが消えてしまうのを防ぐために使っているのですがさてどうしたらいいのか...
Form1_Paintの動きを一時的に止めることが何かでできるのか?
Form1_Paintを使わずに他のウィンドウが重なった後CGが消えてしまうのを防ぐことができるのか?
どちらかができれば解決なんですが、いまだにいい方法にたどり着けません。
この2点の情報をご存知の方、いらっしゃいましたらアドバイスをいただきたいので解決をはずしておきます。
よろしくお願いいたします。
引用返信 編集キー/

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ

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

管理者用

- Child Tree -