• ベストアンサー

C#でPictureBox内での図形移動について

例えばPictureBoxに縦棒グラフを10本描画し、それが時間の経過と共に全体的に1本づつ左に移動して右端には最新の情報が表示されている様なものが作りたい。 それで右の9本をコピーして左端に移動(上書き)し、右端に新しい棒グラフを描画すれば良いと思っているのですが、図形を移動する方法があれば教えて下さい。 コピーする領域とコピー先の基準点を設定して呼び出すだけのメソッドを期待して探したのですが見当たりませんでした。 TranslateTransform()がそれっぽい感じもするのですがよく分かりません。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

描画はどのように行っているのでしょう ピクチャーボックスなどへ直接となると難しいと思います Bitmapオブジェクトを2個と描画用のGraphicsオブジェクト用意します Bitmap bmSrc, bmDraw; Graphics grBack; 初期化イベントなどで bmSrc = new Bitmap( 幅, 高さ ); grBack = Graphics.FromIamge( bmSrc ); // グラフの描画処理を追加 // bmSrcをgrBackから分離 grBack.Dispose(); bmDraw = (Bitmap)bmSrc.Clone(); pictureBox1.Image = bmDraw; 更新イベントで grBack = Graphics.FromImage( bmSrc ); // スクロール幅が16ドットの場合 grBack.DrawImage( bmDraw, new Point( -16, 0 ) ); // ココに右端の描画処理を追加 // bmSrcをgrBackから分離 grBack.Dispose(); bmDraw = (Bitmap)bmSrc.Clone(); pictureBox1.Image = bmDraw; といった具合で

mark225
質問者

お礼

お教え頂いた方法でやってみます。 どうも有り難うございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C# PictureBox + panelでのスクロール

    C#でグラフを表示をさせるため、PictureBoxをPanelに貼り付け、AutoScroll=trueとしてPictureBoxに描画し、スクロール表示させることにしました。通常の表示を行う際には問題はないのですが、グラフを2倍や3倍に拡大表示を行おうとすると、PictureBox.Widthの設定可能な最大値が32768であるため、グラフの右端を表示することができません。表示させたいグラフの幅は30000dotなので、3倍表示する際には90000dot必要となります。 なにかいい解決方法がありましたらご教示をお願いします。

  • Pictureboxについて

    VB.netで開発を行っていますが、Pictureboxの描画処理で困っています。 プログラム、処理は以下のような感じです。 プログラム ・1つのPictureboxに対して、8台の機械の状態をそれぞれグラフ描画して、さらに全ての機械の実績値の合計を1つのグラフに  描画する。(計9つのグラフを描画します。) ・画面で任意の機械の絵を選択、スクロールで移動できます。(わかりづらいですが、ライン構想のようなものです。) ・スレッドで10秒間隔で毎回更新されます。(毎回描画しています。) 以上のような描画処理を行っておりますが、納品するパソコンがタッチパネルPC(windows xp embedded)なので、 スペックが低く、機械の絵を動かすと、描画が遅いと客から指摘を受けました。 機械の絵を動かした時、グラフを含め全ての描画を行っていることが原因だと思いますが、前回描画したグラフの内容を消去しないまま、 現在、動かしている機械の絵のみ描画するという方法はPictureboxで可能でしょうか。 (1つのPictureboxの特定の部分のみ描画したい。) また、何か他によい方法があれば教えて頂けないでしょうか。

  • Pages 図形「ペンで描画」のことで教えて下さい

    Pagesの機能 図形「ペンで描画」を使って折れ線グラフを描いています。そのとき左端と右端には、丸(ポッチ)を出せるのですが、途中の折れ曲がったところには出せません。どうしたらいいのでしょうか?無理なのでしょうか?

    • 締切済み
    • Mac
  • Canvas等の図形を移動する時,直前のその図形のみを削除する方法

    Canvas等で描画された図形を十字キー操作で移動する時,プログラムの処理(負担)を減らすために,Canvas等に描かれている全図形を再描画するのではなく,移動するその図形"だけ"を再描画しつつ,移動させたいのです. そのためには,どのような事をしなければならないのでしょうか? アドバイスを宜しくお願いします. 例: Canvas上のある所に○を描くとします.これをキーボードの↑↓←→キーに合わせて,移動させたいのです. しかし,私のプログラムでは,上記のプログラムは大体出来ているのですが,以下の不満があります. Canvas上には,上記の○以外にも,△や□等が散らばって描画されていますので,○の移動毎に,Canvas上の全図形を再描画しています。これで,Canvas上で変更点がない図形も再描画され,処理的に無駄を感じていますので,○だけについて,移動を表現する描画をしつつ,移動前の○図形を削除したいのです. また,GraphicsのclearRect(x,y,width,height)メソッドで,移動直前の○を消せばよいと思ったのですが,これを使用した場合,図形○に図形△が少しでも重なっていた場合,○だけでなく△の図形も一部消されてしまい上手くいきません. ○をCanvas上に描いたGraphicsインスタンスを記憶しておく事は出来るのでしょうか? 出来るのであれば,そのインスタンスから自分が描画した図形○を消す事で,○だけを削除できる...かな....と思っています.... 上記の私の要望が満たされるのであれば,CanvasやGraphicsの範囲外の手法で全くかまいませんので,是非アドバイスを宜しくお願いします。 参考URLもご提示いただければ,なお有難いです.

    • ベストアンサー
    • Java
  • [続編] pictureBoxそのものの位置を移動させたい -- 残像取り除きたい

    以前、『pictureBoxそのものの位置を移動させたい』というタイトルで質問させていただきました。変数iを用意して、iの値が変わるたびにpictureBoxそのものが動いているように見せかけるというもの。これに関しては、zhaojieさまから教えていただき、 Me.PictureBox1.Location = New System.Drawing.Point(i, j) で実現できました。しかしながら、実際に描画させると残像が残ってしまうようです。これをどうにかしたい。添付資料上部は初期状態で、右下に動かしたいピクチャーボックスがあります。これにある処理(グラフをかかせる)をさせながらピクチャーボックスを移動させたのが下部になります。ピクチャーボックスが左に移動しているのがわかると思います。ただ、軌跡が残像として残ってしまいます。これをなくす対処方法があれば教えてください。

  • スクロール戻りを止めたい(Word2007)

    表示倍率を300%位に上げ、描画キャンバスで図の編集時に、 スクリーンより広くなりますから、スクロールバーを右端へ移動させるのですが、 ここで、図形をマウスでコピーしたりすると、スクロールバーが描画キャンバスの左端へ移動してしまいます。 非常に面倒なので、スクロールバーが戻らないように出来ませんか?

  • 多数の図形の一括選択と描画キャンバスの左端位置変更

    Word 2010です。 (1) 多数の図形全部を一括して(つまり、1度のクリックで)選択するには、次の(a)のようにするとできます。 (a)描画キャンバス内にその多数の図形を入れて、「オブジェクトの選択」の矢印で、その多数の図形全部を含むように四角を描く(つまり、範囲指定する)。 多数の図形全部を一括して(つまり、1度のクリックで)選択する方法は、(a)以外にありますか。 (2) 文字入力領域の左端から描画キャンバスの左端を引き離すにはどうしたらいいでしょうか。つまり、文字入力領域の左端と描画キャンバスの左端との間に文字を入力するにはどうしたらいいでしょうか。 ※つまり、次の(a)と(b)の両方をしたいんです。   (a)多数の図形全部を一括して(つまり、1度のクリックで)選択する。   (b)その多数の図形の左側に文章を入れる。 Word 2003では簡単にできていたのですが.....。

  • 図形描画が透明になってしまう。

    エクセルの図形描画を書いたものが、時間が経過すると透明になってしまうことがあります。また、同様に横罫線を引いて、この、罫線を縦に移動した場合も透明になることがありました。何か、対処方法はありますか?どなたか教えてください。

  • (/_;) 図形描画のツールバーが、画面から消えてしまいました……

     WindowsでWord2000を使ってます。  「図形描画」のツールバーを画面の下に移動させようかと思って、ツールバーの左端をクリックし、そのままバー全体をズルズルッとドラッグして、画面のいちばん下にもっていったら、ふしぎなことに、とつぜん「図形描画」のツールバーが消えてしまいました。  「どこにかくれたの?」と、復活を願ってあれこれやってみましたが、どうしても姿をあらわしません。  たいせつなツールバー……どこにいってしまったんでしょうか?   ふたたび、世に出す方法を教えてください。

  • VB.NETでタイマーを利用した時計を作成しています。

    棒グラフのような感じにPictureBoxの中にLabelを描画し そのラベルを3つ書き、【秒】、【分】、【時】とわけ、 タイマーを利用してその棒グラフ(Label)を伸ばそうと考えています。またリアルタイムにも対応させたいと考えております。 しかし、どのようにして伸ばせばいいかがわからず苦戦しております。 よろしかったら教えて下さい。