• ベストアンサー

PictureBoxのImageを前面に

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

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

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

格子をBitmapに描画して PictureBoxのBackgroundImageに設定して グラフのビットマップを Imageプロパティに設定すれば 希望通りになると思いますよ

nebokken
質問者

お礼

ありがとうございました。やはり、e.Graphics…とBitMapの混在は無理ですよね。思い通りになりました。でも、vb6のlineにせよpsetにせよ図形処理は簡単で良かったとつくづく思います。

関連するQ&A

  • PictureBoxの描画について

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

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

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

  • C#のPictureBoxのImageについて

    Formに2つのピクチャーボックスを張り付けて、片方のピクチャーボックスに表示しているImageの特定の領域をもう片方にコピーして、それをファイルに保存しようとしたらエラーが出てしまいました。 コピーしているプログラムはこんな感じです。 Graphics g = pictureboxDst.CreateGraphics(); g.DrawImage(picbureboxSrc.Image, pictureboxDst.ClientRectangle, srcRect, GraphicsUnit.Pixel); と、単純にDrawImageでSrcからDstにコピーしているだけです。 で、pictureboxDst.Image.Save()を実行すると、Imageがnullですと怒られます。 Graphicsは、pictureboxと結びついているだけだというのはわかったのですが、DrawImageでコピーした先というのは、pictureboxDstのImageではないのでしょうか? たぶん、私の考え方がおかしいのだと思いますが、どう考えればいいのか教えてください。

  • VisualStudioのpictureBox

    VC++2008でC++/CLIでpictureBoxにグラフを描画するプログラムを作成しています。 最大値を200程度にしたいのですが,約180以上の数値を入れるとpictureBoxの上部に点が描画されているようです。(pictureBoxの外側なので,点は見えませんが...) 最大値を200,最小値を0としたら,pictureBoxの最上部が200,最下部が0 になるようなプログラムはどのようにすればよいでしょうか? 座標は左下が原点になるようには設定しています。

  • pictureboxのイメージ出力処理で

    VB.NETを使用しています。 Form上にpicturebox1~picturebox10まで配置しています。 下記の関数の引数aにきた値により1~10のどのpictureboxに画像を出力するか処理をわける方法をどなたかアドバイスお願いします。 現在はselect文を使用して処理しています。 for文などでまとめることはできませんでしょうか? Private Sub Test(ByVal a As String) ※この中でaに1がくるとpiturebox1.Image = 画像 aに10がくるとpicturebox10.image = 画像 という処理をしたい。 このように→picturebox & "a" & ".image" = 画像 End Sub 宜しくお願いします。

  • 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において、Form1上にPictureBox1を配置し、 起動時にPictureBox内に絵を描きたいと思っています。 ApplicationEvensVb内に以下のように 本来PictureBox1のプロシージャ内に記述したコマンドを記述しましたが、 ・型PictureBox1.CreateGraphicsが定義されていません。 ・名前PictureBox1は定義されていません。 というエラーが出てしまいます。 無事に絵を描くにはどうしたらいいのでしょうか? Partial Friend Class MyApplication Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup Dim g As Graphics = New PictureBox1.CreateGraphics() g.DrawLine(Pens.Black, 0, 540, PictureBox1.Width, 540) End Sub End Class

  • VB.NETのグラフィック描画で困っています

    VB.NETでのグラフィックの記述方法ですが 何かをクリックすると描画させるのではなく 単にあるsubプロシージャ内でグラフィックを描画させる記述する方法として pictureBox1.Image=New Bitmap(PictureBox1.width,pictureBox1.Height) Dim g As Graphics = Graphics.FromImage(PictureBox1.Image) を教えていただきました。そこで private sub xy_keisan() '座標を計算させるプロシージャ disp_x() 'x座標に目盛りを表示させるプロシージャ disp_Y() 'xの目盛り数によってY座標の位置を変えて表示させるプロシージャ end sub private sub disp_x() pictureBox1.Image=New Bitmap(PictureBox1.width,pictureBox1.Height) Dim g As Graphics = Graphics.FromImage(PictureBox1.Image) g.DrawLine(****** end sub private sub disp_y() pictureBox1.Image=New Bitmap(PictureBox1.width,pictureBox1.Height) Dim g As Graphics = Graphics.FromImage(PictureBox1.Image) g.DrawLine(****** end sub のような記述(引数とか細かい所は端折っています)ですとdisp_yは描画されていますが,disp_xは消えてしまいます。 pictureBox1.Image=New Bitmap(PictureBox1.width,pictureBox1.Height) が消えてしまう原因だとおもって宣言場所を変えてみましたが同じです 逆にこれが無いと描画させることが出来なくなります。 これの意味も今ひとつ判りません よろしくお願い致します

  • pictureboxの画像を削除するには?

    Visual C# 2008を使用しています。 ボタンを押すとpictureboxに画像が表示されるプログラムを作成しました。 今度は、その表示された画像をクリックし、別のボタンを押すことでその画像が削除できるようにしたいと思っているのですが、うまくプログラムできません。 誰か教えていただけないでしょうか? ソースコードは以下のようになっています。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace algorithm { public partial class Form1 : Form { int space = 10; public Form1() { InitializeComponent(); } private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { } private void kihonsyori_Click(object sender, EventArgs e) { if (this.pictureBox1.Image == null) { Bitmap img = new Bitmap(@"C:\Documents and Settings\admin\My Documents\Visual Studio 2008\Projects\algorithm\algorithm\picture\基本処理箱.png"); Graphics g = pictureBox1.CreateGraphics(); g.DrawImage(img, 0, space, 0.4F * img.Width, 0.3F * img.Height); space += 50; img.Dispose(); g.Dispose(); } else { this.pictureBox1.Image.Dispose(); this.pictureBox1.Image = null; } } private void groupBox1_Enter(object sender, EventArgs e) { } private void pictureBox1_Click(object sender, EventArgs e) { } private void hanpuku_Click(object sender, EventArgs e) { if (this.pictureBox1.Image == null) { Bitmap img = new Bitmap(@"C:\Documents and Settings\admin\My Documents\Visual Studio 2008\Projects\algorithm\algorithm\picture\反復箱.png"); Graphics g = pictureBox1.CreateGraphics(); g.DrawImage(img, 0, space, 0.4F * img.Width, 0.3F * img.Height); space += 80; img.Dispose(); g.Dispose(); } else { this.pictureBox1.Image.Dispose(); this.pictureBox1.Image = null; } } private void sentaku_Click(object sender, EventArgs e) { if (this.pictureBox1.Image == null) { Bitmap img = new Bitmap(@"C:\Documents and Settings\admin\My Documents\Visual Studio 2008\Projects\algorithm\algorithm\picture\選択箱.png"); Graphics g = pictureBox1.CreateGraphics(); g.DrawImage(img, 0, space, 0.4F * img.Width, 0.3F * img.Height); space += 80; img.Dispose(); g.Dispose(); } else { this.pictureBox1.Image.Dispose(); this.pictureBox1.Image = null; } } private void sakujyo_Click(object sender, EventArgs e) { pictureBox1.Image = null; space = 0; } } }

  • labelを前面に出したい

    vb6で座標平面を作成するプログラムを作っています。lineやlabelを配列で設置しましたが、 lineが前面に出てしまい、とても見づらいものになってしまいました。labelを前面に出すにはどうしたらよいでしょうか。 (1)lineコントロールを配置し、index=0 (2)labelコントロールを配置し、index=0 (3)(1)と(2)が重なるようにします(label1(0)が前面に出ています)。 (4)以下を実行します Private Sub Form_Load() Form1.ScaleMode = 3 Label1(0).FontSize = 15 Label1(0).FontBold = True Line1(0).BorderWidth = 2 Line1(0).BorderColor = &H80000005 Load Line1(1) With Line1(1) .X1 = 100 .X2 = 100 .Y1 = 0 .Y2 = 200 .Visible = True End With Load Label1(1) With Label1(1) .Left = 98 .Top = 80 .Visible = True End With End Sub (5)label(1)が背面になります。