- ベストアンサー
roadイベントで描画できない?
すいませんもう一丁お願いします... えと http://oshiete1.goo.ne.jp/kotaeru.php3?q=1305647 の内容をroadイベントで実行しようとしても何も起きないのですが、方法はありますか?
- みんなの回答 (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
その他の回答 (1)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
ロード時 PictureBox1.Image = Image.FromFile(DEF_BMP) と Dim bmap = New Bitmap(Me.PictureBox1.Image) をやっているなら、PictureBox1を介さず読めばいいですよ。 ロード時の描画前イメージを取得しているので、イメージが無効です^^; 最初からビットマップオブジェクトを取得するならこうです。 Dim bmap = New Bitmap(DEF_BMP)
補足
毎度どうもありがとうございますw picturebox1に最初から入ってる画像なんです ファイルから呼び出すと配ったりする時に大変だなって思うんで、、、 それとDEF_BMPってなんですか? だんだんずうずうしくなってます、すいません...
お礼
ありがとうございました、助かります またよろしくお願いしますw