Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
画像の表示方法
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=10000#CommentId16917
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
ころんぱ
 (社会人)
投稿日時
2011/2/2 23:24:44
■shu様
ついさっき、『弾幕的なものを作りたいです!』の中の南場様のサンプルを見てみました。画像を描画するまでの宣言の過程が見やすくのっていますね。少しずつでも調べてみようと思います。完結しているソフトでしたので、手軽に動いてるところが見れるのも助かります
他の分もひとつひとつおっかけて調べてみようと思います
■るきお様
bmp画像のdpiの件は参考になりました。bmpファイルを直接右クリック→プロパティ→「概要」で確認出来ますね。2dpiでした。96dpiにして、改めて実行してみるとうまくいきました;;ありがとうございます
今回の件は、
>何かのソフトで画像を開いた時と、VBのプログラムで画像を表示させた時とで大きさが違うので、同じ大きさで表示させたい
で間違いありません
表示させていたのは、サンプルと同一の画像をbmp化したものでしたが、フォームが全てマゼンダで埋まり、bmpの左上にドットを入れても(かなり拡大されているため)霧のようなものが見えるだけ、という感じでした
dpiは、日頃使用しているAZ-PAINTERでbmp変換すると2dpiになってしまうようです。ちょっとツールは探してみます。(ちなみに 96dpiで等倍になるようですが、実際はdpiを元に常に拡大縮小が活きている、という感じみたいですね。あまり意識する必要は無いかもしれませんが)
とりあえず、今回のロジックを元にいろいろ試してみたいと思います。講座も是非参考にしていきます
●ソースです↓
Public Class Form1
Private mainGraphics As Graphics
Private PlayerImage As Bitmap
'Private Property Center As ImageLayout
Public X As Integer 'X座標 追記
Public XZ As Integer '移動量 追記
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Init()
Timer1.Enabled = True
X = 0 'X座標 追記
XZ = 0 '移動量 追記
End Sub
Private Sub Init()
'▼描画用のGraphicsクラスの確保(技術的な処理)
If mainGraphics Is Nothing Then
'初回のみ生成
Dim bmp As New Bitmap(Me.ClientRectangle.Width, Me.ClientRectangle.Height)
Me.BackgroundImage = bmp
mainGraphics = Graphics.FromImage(bmp)
End If
'exeと同じフォルダーにあるPlayer1.bmpを読み込む。
'これができるのは、ファイルのプロパティで出力ディレクトリにコピーする設定になっているから。
'PlayerImage = Image.FromFile(Application.StartupPath & "\CHARA1.bmp") 元
PlayerImage = Image.FromFile("D:\110201 VB GAZOU\aaa.bmp") '画像読込書換
' ダブルバッファリング 追記
Me.DoubleBuffered = True
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'描画されているものを消して全面を黒くする。
mainGraphics.Clear(Color.Black)
'座標演算追記 XZ=移動量
X = X + XZ
'X座標の位置100を基準に増減速追記 XZ=移動量
If X > 100 Then
XZ = XZ - 1
Else
XZ = XZ + 1
End If
mainGraphics.DrawImage(PlayerImage, X, X)
'フォームを再描画
Me.Invalidate()
End Sub
End Class
※ただ、実はもう、たまらずマップチップを並べてスクロールさせるところまで一気に組んでみました。描画とダブルバッファリングというのを知ったので・・。
長いことやりたかったマップチップを使った2Dのマップ表示&スクロールがやっと出来ました(泣)
(描画までの部分はまだほとんど理解していませんが、描画が出来ればかなり楽しくVBを続けられそうです)