質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

1回答

8050閲覧

C# 画像の移動

n.k8808

総合スコア25

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/03/20 11:11

C#

1using System; 2using System.Windows.Forms; 3using System.Drawing; 4 5class v1 : Form 6{ 7 Graphics g; 8 int S_s = 90; //Squares size 9 int p_x = 7; 10 int p_y = 4; 11 Point CharaPosition; 12 //var timer = new Timer(); 13 Bitmap player1 = new Bitmap("d:\\player1.png"); 14 this.timer1.Enabled = false; // タイマー停止状態で初期化 15 this.timer1.Interval = 100; // タイマーイベントの間隔 16 17 void initialization() 18 { 19 this.Text = "Game"; 20 this.WindowState = FormWindowState.Maximized; 21 } 22 23 void s1_drawing() 24 { 25 Bitmap stage1 = new Bitmap("d:\\stage1.jpg"); 26 g.DrawImage(stage1, 0, 0); 27 } 28 29 void p1_drawing() 30 { 31 g.DrawImage(player1, p_x*S_s, p_y*S_s); 32 } 33 34 protected override void OnKeyDown(KeyEventArgs e) 35 { 36 CharaPosition.X = 0; 37 CharaPosition.Y = 0; 38 // タイマー初期化設定 39 timer1.Enabled = false; // タイマー停止状態で初期化 40 timer1.Interval = 100; // タイマーイベントの間隔 41 if (e.KeyCode == Keys.Right) 42 { 43 p_x++; 44 } 45 if (e.KeyCode == Keys.Left) 46 { 47 p_x--; 48 } 49 if (e.KeyCode == Keys.Up) 50 { 51 p_y--; 52 } 53 if (e.KeyCode == Keys.Down) 54 { 55 p_y++; 56 } 57 Invalidate(); 58 } 59 60 protected override void OnPaint(PaintEventArgs e) 61 { 62 g = e.Graphics; 63 initialization(); 64 s1_drawing(); 65 p1_drawing(); 66 } 67 68 static void Main() 69 { 70 Application.Run(new RPG()); 71 } 72 //ここです// 73 if (e.KeyCode == Keys.Right) 74 { 75 p_x++; 76 } 77 if (e.KeyCode == Keys.Left) 78 { 79 p_x--; 80 } 81 if (e.KeyCode == Keys.Up) 82 { 83 p_y--; 84 } 85 if (e.KeyCode == Keys.Down) 86 { 87 p_y++; 88 } 89 Invalidate(); 90 } 91 92 protected override void OnPaint(PaintEventArgs e) 93 { 94 g = e.Graphics; 95 initialization(); 96 s1_drawing(); 97 p1_drawing(); 98 } 99 100 static void Main() 101 { 102 Application.Run(new v1()); 103 } 104}

これだと、画像の表示されるX座標Y座標に変わり 再度描写されるだけですが,
画像が移動(アニメーション)するようにしたいと思っています。
どうすればいいか、アドバイスをお願いします。m(_ _)m

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

次の画像を描く前に現在の画像を消せば移動します。現在の画像を消すには背景を描画するのが楽です。
または PictureBox に描画して、それを動かすなら消す必要もありません。

投稿2017/03/21 05:11

Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問