본문 바로가기
공부,일/C#

210607

by fromnothing1 2021. 6. 7.

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 함수임으로 우리가 부를순 없다.

 

 

그래픽 속도 개선

이미지 움직임이 빨라진다.

 

'공부,일 > C#' 카테고리의 다른 글

210608  (0) 2021.06.08
소코반게임 만들기  (0) 2021.06.08
window forms  (0) 2021.06.04
210604  (0) 2021.06.04
210603_2  (0) 2021.06.03

댓글