• ベストアンサー

roadイベントで描画できない?

すいませんもう一丁お願いします... えと http://oshiete1.goo.ne.jp/kotaeru.php3?q=1305647 の内容をroadイベントで実行しようとしても何も起きないのですが、方法はありますか?

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

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

DEF_ほにゃらら は、定数(デファイン)です。 この場合、DEF_BMPだから BMPのファイルパスを定数として、宣言しているという暗黙事項ですよ。 >picturebox1に最初から入ってる画像なんです 画面がアクティブになる前って、VB6でもできないんじゃ・・・(できるとしたらすいません) 追記ですが、.NETのピクチャボックスにはAutoRedrawというプロパティを持っていないので、実現したいピクチャボックスのPaint時に(Formでもそうなのですが)再描画ロジックを入れ込まなければ、前面に別ウィンドウが表示されると、絵が消えてしまいます。 これらの問題も含め解消すべく、画面のOnLoadイベントを使用せず、PictureBox2.Paintイベントを利用し、描画するタイミングをずらしましょう。 先頭に宣言 Private bmap As Bitmap Private rectSrc As RectangleF ピクチャボックス2の描画イベントハンドラ Private Sub PictureBox2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox2.Paint   '絵がまだ未設定の時だけ   'Picture2の絵を差し替えたいときは、bmap = Nothingを、別のタイミングでしてあげたらいい   If bmap Is Nothing Then     '絵を読み込む     bmap = New Bitmap(Me.PictureBox1.Image)     '切り取り範囲を指定     rectSrc = New RectangleF(0, 0, bmap.Width / 2, bmap.Height / 2)   End If   '表示(AutoRedraw =Trueを実現する意味もある)   e.Graphics.DrawImage(bmap, 0, 0, rectSrc, GraphicsUnit.Pixel) End Sub 画面が閉じるときのイベント Protected Overrides Sub OnClosed(ByVal e As System.EventArgs)   '破棄   bmap.Dispose() End Sub

noname#30655
質問者

お礼

ありがとうございました、助かります またよろしくお願いしますw

その他の回答 (1)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

ロード時 PictureBox1.Image = Image.FromFile(DEF_BMP) と Dim bmap = New Bitmap(Me.PictureBox1.Image) をやっているなら、PictureBox1を介さず読めばいいですよ。 ロード時の描画前イメージを取得しているので、イメージが無効です^^; 最初からビットマップオブジェクトを取得するならこうです。 Dim bmap = New Bitmap(DEF_BMP)

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1262814
noname#30655
質問者

補足

毎度どうもありがとうございますw picturebox1に最初から入ってる画像なんです ファイルから呼び出すと配ったりする時に大変だなって思うんで、、、 それとDEF_BMPってなんですか? だんだんずうずうしくなってます、すいません...