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

わんくま同盟

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

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


(過去ログ 31 を表示中)
■14348 / )  Re[7]: パネル内の座標値、そして座標値の範囲を設定する
□投稿者/ Tetsu (9回)-(2008/02/15(Fri) 17:57:13)
Tetsu さんの Web サイト
やじゅさん

度々ご返答ありがとうございます。感謝しています。
 
> 再描画をする必要があります。
> 
> 一案ですが、
> 折れ線グラフを、Bitmapイメージで作成しpictureBoxコントロールにてそのBitmapイメージを表示させるようにすれば、
> スクロールさせても自動的に描画されます。
> 
> ようは折れ線グラフを一度画像にするってことです。

ということは、画像にしていないと再描画されないということでしょうか。
その後の作業の関係上、なるべくBitmapにはしたくないと思っているのです。
他に何も方法がない、という時はBitmapにするかもしれませんが。
現在取り組んでいるのは、グラフではなく、GPSで取得した位置データを描画しようとしているのです。

Update()やInvalidate()などを使ってみましたが、どうもうまくいきません。
Application.DoEvents();をforループの前につけたところ、アプリケーション起動時には折れ線は描くことができました。
しかし、画面をスクロールすると、やはり描画されていた折れ線は消えてしまいます。

画面をスクロールした時に再描画をさせるしかけを作らねばならない、ということになるでしょうか。
画面をスクロールした時に再描画する方法、というのは存在するのでしょうか。
私なりに調べてみましたが、みつかりませんでした。
ご存知でしたら教えていただけないでしょうか。



            //折れ線の位置をずらして3本の折れ線を描画
            for (int i = 0; i < 3; i++)
            {
                Application.DoEvents();

                //点を配列に格納
                myPoints[0] = new PointF(xOne, yOne);
                myPoints[1] = new PointF(xTwo, yTwo);
                myPoints[2] = new PointF(xThree, yThree);

                //折れ線を矢印にする
                pen.EndCap = LineCap.ArrowAnchor;

                //折れ線を描く
                e.Graphics.DrawLines(pen, myPoints);


                
                //折れ線の位置を変える
                xOne += 300f;
                yOne += 300f;
                xTwo += 300f;
                yTwo += 300f;
                xThree += 300f;
                yThree += 300f;

                //折れ線の色を変える
                cRed += 20;
                cGreen += 40;
                cBlue += 20;


            }

返信 編集キー/


管理者用

- Child Tree -