1.리소스 사용하기
리소스 스트링 추가
HELLOW 안에 지옥으로 키티 들어있다.
2 . 이미지 리소스 활용해서 이미지 이동하기 (경계검사포함)
1. 이미지를 리소스에 먼저 등록
2. form1 의 paint 이벤트 생성
3. 코드 작성
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace _210607_006
{
public partial class Form1 : Form
{
//this.ClientSize = new System.Drawing.Size(800, 500); // 우리가 실제 사용하는 크기
// form1 속성 size = 816,539 : 경계선 메뉴바등을 포함한 크기
Bitmap aImage;
Point aKitty;
int PosXstart = 0;
int PosYstart = 0;
int pointX = 0;
int pointY = 0;
int TileXNum = 8;
int TileYNum = 5;
int TileXSize = Properties.Resources.Image1.Width;
int TileYSize = Properties.Resources.Image1.Height;
public Form1()
{
InitializeComponent();
//Properties.Resources.Image1 리소스에 등록된 이미지 사용
aImage = new Bitmap(Properties.Resources.Image1);
aKitty = new Point(PosXstart, PosYstart);
ClientSize = new System.Drawing.Size(TileXNum* TileXSize, TileYNum* TileYSize);
}
//화면에 다시그리는 함수
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImage(aImage, aKitty);
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Up:
if (pointY == 0) { break; }
aKitty.Y -= TileYSize;
pointY -= 1;
this.Refresh();
break;
case Keys.Down:
if (pointY == (TileYNum-1)) { break; }
aKitty.Y += TileYSize;
pointY += 1;
this.Refresh();
break;
case Keys.Left:
if (pointX == 0) { break; }
aKitty.X -= TileXSize;
pointX -= 1;
this.Refresh();
break;
case Keys.Right:
if (pointX == (TileXNum-1)) { break; }
aKitty.X += TileXSize;
pointX += 1;
this.Refresh();
break;
default:
break;
}
}
}
}
키보드 입력값으로 이미지 이동하는 코드
Refresh() : 윈도우가 Form1_Paint 함수를 불러주도록 호출
Form1_Paint 함수는 rollback 함수임으로 우리가 부를순 없다.
그래픽 속도 개선
이미지 움직임이 빨라진다.
댓글