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

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

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

Re[8]: 画像のちらつきが止められません


(過去ログ 47 を表示中)

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

■25632 / inTopicNo.1)  画像のちらつきが止められません
  
□投稿者/ 裕猫 (60回)-(2008/09/24(Wed) 11:35:29)

分類:[.NET 全般] 

会社のマシンWindows2000proでのテストで問題がなかったので安心していたら、WindowsXPとVistaのマシンで実行すると各コントロールにマウスカーソルが重なると画像がちらつくことが判明しました。|(#33)/
ペイントイベントによる再描画が原因とまではつきとめましたが、ダブルバッファを使用しても止められません。ペイントイベントの中で背景を描き、マスクを重ねキャラクターを重ねています。ちらつくのはキャラクターの部分です。このちらつき止めることは可能でしょうか?よろしくお願いいたします。

引用返信 編集キー/
■25638 / inTopicNo.2)  Re[1]: 画像のちらつきが止められません
□投稿者/ やじゅ (662回)-(2008/09/24(Wed) 11:58:07)
やじゅ さんの Web サイト
No25632 (裕猫 さん) に返信
>WindowsXPとVistaのマシンで実行すると各コントロールにマウスカーソルが重なると
>画像がちらつくことが判明しました。|(#33)/
>ちらつくのはキャラクターの部分です。このちらつき止めることは可能でしょうか?
>よろしくお願いいたします。

少なくても、見やすいように改行して欲しいものです。

お使いのグラフィックボードによっては、マウスカーソルがちらつくときあるかもですね。

引用返信 編集キー/
■25640 / inTopicNo.3)  Re[2]: 画像のちらつきが止められません
□投稿者/ みきぬ (102回)-(2008/09/24(Wed) 12:14:14)
# 脱線失礼

No25638 (やじゅ さん) に返信
> 少なくても、見やすいように改行して欲しいものです。
>
投稿モードが「通常モード」であれば、特に改行を入れなくても問題ないと思います。
「図表モード」だと、明示的に改行を入れないと改行してくれないみたい。
引用返信 編集キー/
■25645 / inTopicNo.4)  Re[3]: 画像のちらつきが止められません
□投稿者/ やじゅ (663回)-(2008/09/24(Wed) 12:33:55)
やじゅ さんの Web サイト
No25640 (みきぬ さん) に返信
> 投稿モードが「通常モード」であれば、特に改行を入れなくても問題ないと思います。
> 「図表モード」だと、明示的に改行を入れないと改行してくれないみたい。

了解です。
まー横スクロールしないと読めないのは、ちと辛いとこですね。


タイマーかなんかで、頻繁にWM_PAINTを更新しているのかなー
マウスカーソルも自前で描画するっていう手もあります、
そうすれば、ちらつくことはないですけどね。
引用返信 編集キー/
■25647 / inTopicNo.5)  Re[4]: 画像のちらつきが止められません
□投稿者/ 渋木宏明(ひどり) (888回)-(2008/09/24(Wed) 12:46:37)
渋木宏明(ひどり) さんの Web サイト
仕方がない場合もあるけど、描画の手順がまずくてもなるのでなんとも。
引用返信 編集キー/
■25648 / inTopicNo.6)  Re[4]: 画像のちらつきが止められません
□投稿者/ 裕猫 (61回)-(2008/09/24(Wed) 12:56:42)
No25645 (やじゅ さん) に返信
> タイマーかなんかで、頻繁にWM_PAINTを更新しているのかなー
> マウスカーソルも自前で描画するっていう手もあります、
> そうすれば、ちらつくことはないですけどね。
ああすみません。コードを乗せようとして図表モードにしていました。

    public static class IllustClass
    {
        public static void Paint(string usiro, string hito, int Iti, Graphics g)
        {
            Bitmap Haikei = new Bitmap(usiro);
            Bitmap Mask = new Bitmap(hito);
            Bitmap Kyara = new Bitmap(hito);
            
            Rectangle Kage = new Rectangle(Mask.Width / 2, 0, Mask.Width, Mask.Height);
            Rectangle HKage = new Rectangle(0, 0, Kyara.Width / 2 - 1, Kyara.Height);

            Mask.MakeTransparent(System.Drawing.Color.White);
            Kyara.MakeTransparent(System.Drawing.Color.Black);

            g.DrawImage(Haikei, 0, 0);
            g.DrawImage(Mask, Iti, 511 - Mask.Height, Kage, GraphicsUnit.Pixel);
            g.DrawImage(Kyara, Iti, 511 - Kyara.Height, HKage, GraphicsUnit.Pixel);

            Haikei.Dispose();
            Mask.Dispose();
            Kyara.Dispose();
        }
    }
を外のクラスに作り、呼び出すクラスの中で

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            IllustClass.Paint(Haikei, Hito, X, CreateGraphics());
        }
で描画しています。 ちらつくのはマウスカーソルではなくフォームに描画されるCGのMaskとKyaraの部分です。
タイマー機能は一切使用していません。
何か気づくところはおありでしょうか?

引用返信 編集キー/
■25651 / inTopicNo.7)  Re[5]: 画像のちらつきが止められません
□投稿者/ 渋木宏明(ひどり) (890回)-(2008/09/24(Wed) 13:11:01)
渋木宏明(ひどり) さんの Web サイト
> 何か気づくところはおありでしょうか?

Paint イベントの扱い方が間違ってます。

>IllustClass.Paint(Haikei, Hito, X, CreateGraphics());

IllustClass.Paint(Haikei, Hito, X, e.Graphics);


引用返信 編集キー/
■25653 / inTopicNo.8)  Re[6]: 画像のちらつきが止められません
□投稿者/ 裕猫 (63回)-(2008/09/24(Wed) 13:22:39)
No25651 (渋木宏明(ひどり) さん) に返信
>>何か気づくところはおありでしょうか?
>
> Paint イベントの扱い方が間違ってます。
>
> >IllustClass.Paint(Haikei, Hito, X, CreateGraphics());
>
> IllustClass.Paint(Haikei, Hito, X, e.Graphics);
>
おおありがとうございます。会社のマシンでは確認できないので、本日帰ってから早速調べてみます。ペイントイベントで呼び出すにはe.Graphicsなんですね。覚えなおします。
解決済み
引用返信 編集キー/
■25655 / inTopicNo.9)  Re[7]: 画像のちらつきが止められません
□投稿者/ PATIO (120回)-(2008/09/24(Wed) 13:32:21)
No25653 (裕猫 さん) に返信
> ■No25651 (渋木宏明(ひどり) さん) に返信
> >>何か気づくところはおありでしょうか?
>>
>>Paint イベントの扱い方が間違ってます。
>>
>>>IllustClass.Paint(Haikei, Hito, X, CreateGraphics());
>>
>>IllustClass.Paint(Haikei, Hito, X, e.Graphics);
>>
> おおありがとうございます。会社のマシンでは確認できないので、本日帰ってから早速調べてみます。ペイントイベントで呼び出すにはe.Graphicsなんですね。覚えなおします。

ではなくて、Paintイベントと一緒に来たGraphicsを使うべきだと思います。
Paintイベントで来たGraphicsには、再描画が必要な領域に関する情報だとか
色々のっかっているのではないかと言う気がします。
自分でCreateした物だとその辺の情報が載っていないのと思うので
再描画の必要がない部分まで対象になるのではないかと思います。

引用返信 編集キー/
■25656 / inTopicNo.10)  Re[8]: 画像のちらつきが止められません
□投稿者/ PATIO (121回)-(2008/09/24(Wed) 13:33:07)
すいません、解決済みを外してしまいました。
付けておきます。

解決済み
引用返信 編集キー/
■25659 / inTopicNo.11)  Re[9]: 画像のちらつきが止められません
□投稿者/ やじゅ (665回)-(2008/09/24(Wed) 13:48:55)
やじゅ さんの Web サイト
Kyaraは、キャラクター(Character)の意味でしょうか?
Kyaraよりは、Charaにしたいところですね。
解決済み
引用返信 編集キー/
■25661 / inTopicNo.12)  Re[8]: 画像のちらつきが止められません
□投稿者/ 裕猫 (64回)-(2008/09/24(Wed) 13:51:47)
No25655 (PATIO さん) に返信
>> ではなくて、Paintイベントと一緒に来たGraphicsを使うべきだと思います。
> Paintイベントで来たGraphicsには、再描画が必要な領域に関する情報だとか
> 色々のっかっているのではないかと言う気がします。
> 自分でCreateした物だとその辺の情報が載っていないのと思うので
> 再描画の必要がない部分まで対象になるのではないかと思います。
>
はい、わかりました。説明ありがとうございます。
解決済み
引用返信 編集キー/
■25720 / inTopicNo.13)  Re[10]: 画像のちらつきが止められません
□投稿者/ 裕猫 (65回)-(2008/09/25(Thu) 08:19:20)
No25659 (やじゅ さん) に返信
> Kyaraは、キャラクター(Character)の意味でしょうか?
> Kyaraよりは、Charaにしたいところですね。
そーですね変数名はローマ字で処理してたので頭がまわっていませんでした。

渋木宏明さんの指摘のところ修正にてXP,Vistaでのちらつき解消されました。ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -