C# Code Example - Basic Image Layering Control

I wrote this program to control a small sprite walking around on a set background. The response of a key up would make the sprite move on the screen within the borders of the background. Walking to the top or bottom of the floor would make you stop like you hit a wall, but you could walk off the left or right sides of the screen and it would scroll infinitely.

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 WindowsFormsApplication1

{

public partial class Form1 : Form

{

int x = 0;

int y = 0;

private bool nonNumberEntered = false;

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

}

private void button2_Click(object sender, EventArgs e)

{

Bitmap back = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\daosshrine.gif");

Bitmap var1 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\maxim\left-1.gif");

Bitmap var2 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\maxim\left-2.gif");

Graphics g = Graphics.FromHwnd(Handle);

g.DrawImage(back, 75, 50);

g.DrawImage(var1, 180, 180);

x = 180;

y = 180;

}

void up()

{

Bitmap back = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\daosshrine.gif");

Bitmap var1 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\maxim\back-1.gif");

Bitmap var2 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\maxim\back-2.gif");

Graphics g = Graphics.FromHwnd(Handle);

for (int i = 0; i < 2; i++)

{

if(y - 3 > 100)

y -= 3;

System.Threading.Thread.Sleep(100);

g.DrawImage(back, 75, 50);

if (i % 2 == 1)

g.DrawImage(var1, x, y);

else

g.DrawImage(var2, x, y);

}

}

void down()

{

Bitmap back = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\daosshrine.gif");

Bitmap var1 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\maxim\front-1.gif");

Bitmap var2 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\maxim\front-2.gif");

Graphics g = Graphics.FromHwnd(Handle);

for (int i = 0; i < 2; i++)

{

if(y + 3 < 245)

y += 3;

System.Threading.Thread.Sleep(100);

g.DrawImage(back, 75, 50);

if (i % 2 == 1)

g.DrawImage(var1, x, y);

else

g.DrawImage(var2, x, y);

}

}

void left()

{

Bitmap back = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\daosshrine.gif");

Bitmap var1 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\maxim\left-1.gif");

Bitmap var2 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\maxim\left-2.gif");

Graphics g = Graphics.FromHwnd(Handle);

for (int i = 0; i < 2; i++)

{

if (x - 3 > 75)

x -= 3;

else

movescreenleft();

System.Threading.Thread.Sleep(100);

g.DrawImage(back, 75, 50);

if (i % 2 == 1)

g.DrawImage(var1, x, y);

else

g.DrawImage(var2, x, y);

}

}

void right()

{

Bitmap back = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\daosshrine.gif");

Bitmap var1 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\maxim\right-1.gif");

Bitmap var2 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\maxim\right-2.gif");

Graphics g = Graphics.FromHwnd(Handle);

for (int i = 0; i < 2; i++)

{

if (x + 3 < 301)

x += 3;

else

movescreenright();

System.Threading.Thread.Sleep(100);

g.DrawImage(back, 75, 50);

if (i % 2 == 1)

g.DrawImage(var1, x, y);

else

g.DrawImage(var2, x, y);

}

}

void movescreenright()

{

Bitmap back = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\daosshrine.gif");

Bitmap back2 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\mov1.bmp");

Bitmap back3 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\mov2.bmp");

Bitmap var1 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\maxim\right-1.gif");

Bitmap var2 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\maxim\right-2.gif");

Graphics g = Graphics.FromHwnd(Handle);

System.Threading.Thread.Sleep(100);

g.DrawImage(back2, 75, 50);

g.DrawImage(var1, x -= 37, y);

System.Threading.Thread.Sleep(100);

g.DrawImage(back3, 75, 50);

g.DrawImage(var1, x -= 74, y);

System.Threading.Thread.Sleep(100);

g.DrawImage(back, 75, 50);

g.DrawImage(var1, x -= 109, y);

}

void movescreenleft()

{

Bitmap back = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\daosshrine.gif");

Bitmap back2 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\mov1.bmp");

Bitmap back3 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\mov2.bmp");

Bitmap var1 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\maxim\left-1.gif");

Bitmap var2 = new Bitmap(@"C:\Users\Tyler\Documents\Downloads\luf2heroes\maxim\left-2.gif");

Graphics g = Graphics.FromHwnd(Handle);

System.Threading.Thread.Sleep(100);

g.DrawImage(back3, 75, 50);

g.DrawImage(var1, x += 37, y);

System.Threading.Thread.Sleep(100);

g.DrawImage(back2, 75, 50);

g.DrawImage(var1, x += 37, y);

System.Threading.Thread.Sleep(100);

g.DrawImage(back, 75, 50);

g.DrawImage(var1, x += 37, y);

}

private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)

{

// Initialize the flag to false.

nonNumberEntered = false;

if (e.KeyCode == Keys.NumPad4)

{

nonNumberEntered = true;

}

}

// This event occurs after the KeyDown event and can be used to prevent

// characters from entering the control.

private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)

{

// Check for the flag being set in the KeyDown event.

if (nonNumberEntered == true)

{

left();

// Stop the character from being entered into the control since it is non-numerical.

e.Handled = true;

}

}

private void textBox1_TextChanged(object sender, EventArgs e)

{

}

protected override bool IsInputKey(Keys AKeyData)

{

switch (AKeyData & Keys.KeyCode)

{

case Keys.Left:

return true;

case Keys.Right:

return true;

case Keys.Up:

return true;

case Keys.Down:

return true;

}

return base.IsInputKey(AKeyData);

}

protected override void OnKeyUp(KeyEventArgs e)

{

base.OnKeyDown(e);

switch (Keys.KeyCode & e.KeyCode)

{

case Keys.Up:

up();

break;

case Keys.Down:

down();

break;

case Keys.Left:

left();

break;

case Keys.Right:

right();

break;

}

}

}

}

Questions or comments? Send e-mail to: vegetaman@gmail.com