• ベストアンサー

現在、VB2005でDrawLineにてPictureBox上にライン

現在、VB2005でDrawLineにてPictureBox上にラインを描いています。 しかし、VB6とは違いラインを描いているFormが隠れるとラインが消えてしまいます。 PictureBoxのPaintイベントで描くようにすれば良いのでしょうが、ラインを描くのに 数万ループして演算しながら座標を決めてるため、Formが隠れて現れるたびに座標演算処理が働き 重くなり実用的ではありません。 Formが隠れてもラインが消えないように出来れば良いのですが、方法をご存知の方がいらっしゃいましたら 宜しくお願いいたします。

  • OVERQ
  • お礼率84% (87/103)

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

  • ベストアンサー
回答No.2

下記ではいかがでしょうか? Private Sub Button1_Click(ByVal sender As System.Object, _              ByVal e As System.EventArgs) Handles Button1.Click   PictureBox1.Image = New Bitmap(PictureBox1.Width, PictureBox1.Height)   Using g As Graphics = Graphics.FromImage(PictureBox1.Image)     g.Clear(PictureBox1.BackColor)     g.DrawLine(Pens.Black, 0, 40, 100, 40)   End Using End Sub

OVERQ
質問者

お礼

ご回答ありがとうございます。 長いこと悩んでたのですが一発で解決しました! ありがとうございます。 もしかしてvbhanatyanさんは、レスキュー花ちゃんですか? VBで不明な点があった場合によく参考にさせて頂いています。 今回は直接ご指導いただき光栄です! では、失礼します。

その他の回答 (1)

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

今手元に環境が無いので確認出来ませんが、 PictureBox 上に書かれた図形を一度、Draw か Image を使って、画像ファイルとしてメモリ内かファイルとして取得して、取得した画像を再度表示する事で逃げられませんか?

OVERQ
質問者

お礼

ご回答ありがとうございます。 今後の参考にさせていただきます。

関連するQ&A

  • VB .net Form_Load時、または関数内でPictureBoxにライン描画を行ないたい。

    Form上にPictureBox,Buttonを配置して、Botton_Click処理時にPictureBox上へのライン描画は Dim g As Graphics = PictureBox1.CreateGraphics g.DrawLine(Pens.Red, 0, 0, 100, 200) g,Dispose() にて行なえましたが、同じような描画を Form_Load時に上記の処理を入れても全く描画されません。Button_Clickイベントのように1クッション置かないと実現できないのでしょうか? Form_Load時、関数内などで周期的にライン描画を 行なってやりたいのですが、どなたか解決方法をご存知の方がいましたら回答の程よろしくお願いいたします。

  • PictureBoxの更新

    VB2005にてプログラミングをしています。 座標点の表示をするためにpictureboxを用い、繰り返し処理と併用しています。 繰り返して座標点の位置(変数)が変わる度にpictureboxを更新したいのですが、繰り返し処理が全て終わった後にしか更新されません。 これを繰り返す度に更新するにはどのようにしたらよいでしょうか。 よろしくお願いいたします。

  • PictureBoxのImageを前面に

     関数のグラフを描くプログラムを作りましたが、グラフが背面にあり、座標平面の格子に消されています。前面に出す方法はありませんか。  FormにPictureBoxを載せ、格子はe.Graphics.DrawLineで描き、グラフはビットマップに描き、PictureBoxのImageで置きました。宜しくお願いします。

  • PictureBoxの描画について

    VB2005を使用してPictureBoxに線を描きました。  Dim g As Graphics = PictureBox1.CreateGraphics()  g.DrawLine(p, X1, Y1, X2, Y2) 線は上手く描けたのですが、表示している画面(Form)を最小化して再度最大化すると、描いた線が消えてしまいます。FormをHideしてもう一度Showしても同じです。 この描画を消さないようにするには、どうすればよいでしょうか?

  • VB.NETでPictureBox間で論理演算

    VB6で作成したツールをVB2008に移植中に画像処理で躓きました。 BitBlt trghDC, trgLeft, trgTop, srcWidth, srcHeight, srchDC, 0, 0, vbSrcAnd こんな感じでPictureBoxから別のPictureBoxへAND処理をしてコピーをしたいのですが、 VB.NETではBitBltを使えないとのことで、代わりの方法を探したのですが、単なるコピーばかりで論理演算つきのサンプルが見つかりません。 何か方法はないでしょうか。 1ドットごとに処理してコピーでは遅すぎて話にならないので×です。 ご教授よろしくお願いします。

  • VB.NETでグラフィックを描くと消えてしまいます

    VB.NETを使って間もないですが、PaintBox_paintイベント外にDrawLineを使って線を引くと表示されません。PaintBox_paintイベント内に書くと表示されますがそれ以外ではだめです。オートリードロウを使おうとしましたが VB.NETではありませんでした。さらに新しいウインドウをかぶせると グラフィックがかぶさったところだけ消えてしまいます。 MSDNを見てもよくわかりません。 解決方法をご存知の方、宜しくお願いいたします

  • Pictureboxについて

    エクセル(VBA)でPictureboxのコントロールが私のツールボックスにありません。VBの方には出てきます。エクセルのツールボックスの方にも出すか、または使えるようにしたいのですが、どうすれば良いか教えてください。Pset,Lineが使いたいのですが。Formでは都合が良くなくて。Excel2000とVB.v6です。 よろしくお願いします。      

  • PictureBoxのDrawWidthの設定

    VB(6.0)の PictureBox の Paint メソッド内で,Line で描画を行っているのですが, PictureBox.DrawWidthの値に大きな値(15pixel程度)を設定すると, なぜか PictureBox 全体が塗りつぶされて しまいます. (PictureBox.ScaleMode = vbPixels かつ1024×768Pixelの全画面表示にしております) このような現象を経験された方はいらっしゃいませんでしょうか? 宜しくお願いいたします.

  • VB205のPicturebox上でのMousewheelイベント

    VB2005で、Form1にPanel1をはりつけ、その中にPicturebox1をはりつけ、Pictureboxの範囲の中で、マウスをホィールしても、イベントが発生しません。ためしに、Picturebox1とPanel1について書いてみましたが、だめでした!(Form1では、発生します) 何がダメなんでしょうか?どなたか詳しい方がいらっしゃいましたら教えて頂けないでしょうか?宜しくお願い致します。 Private Sub PictureBox1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseWheel MsgBox("TEST_Picturebox") End Sub Private Sub Panel1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseWheel MsgBox("TESUT_Panel") End Sub

  • VB .net Panelコントロールにライン描画は可能ですか?

    VB 6.0 から.netへとアップグレードした際に、 PictureBox が Panelへと変換されてしまいました。 .netにもPictureBoxは存在するのになぜPanelにおきかわってしまったのかは不明ですが(VB6.0ではPictureBox内にLineコントロールもありグループ化みたいなことをしていた模様なのでそのためか?) 現在、PictureBoxにライン描画できることは確認したのですが、Panelコントロールにはライン描画はできないのでしょうか?ご存知の方がいましたら回答をお願いします。

専門家に質問してみよう