본문 바로가기
프로그래밍

이미지 파일 읽어오기

by 건우아빠유리남편 2009. 7. 9.
반응형

이제 슬슬 본격적으로 그림파일을 올려볼까요..

 

 

 

그림파일을 보여주는 프로그램입니다..  

일단 그림 파일을 등록해야겠지요..

 

프로젝트이름은 XnaImage로 했습니다.

 

리소스 추가

 

1.     텍스쳐로서 이용할 그림 xna.jpg를 작성하여 프로젝트폴더에 넣는다.
파일형식으로는 BMP PNG JPEG등이 가능하다. 

  xna.jpg

2.     솔루션탐색기의 프로젝트 이름(굵은 글씨로 XnaImage) 를 우 클릭하여 추가->이미 있는 항목을 선택.

     솔루션탐색기가 없는 경우에는, Window->windowlayout reset한다.

3.     솔루션탐색기에 추가한 그림파일이름을 우 클릭하여, 팝업의 property를 선택한다.

4.     Asset Name“xna”인 것을 확인한다.

 

소스코드의 편집

Game1.cs를 편집한다.

 

Game1.cs

using System;

using System.Collections.Generic;

using Microsoft.Xna.Framework;

using Microsoft.Xna.Framework.Audio;

using Microsoft.Xna.Framework.Content;

using Microsoft.Xna.Framework.Graphics;

using Microsoft.Xna.Framework.Input;

using Microsoft.Xna.Framework.Storage;

 

//이미지를 표시한다.

namespace XnaImage {

    public class Game1 : Microsoft.Xna.Framework.Game {

        private GraphicsDeviceManager graphics;

        private ContentManager        content;

        private SpriteBatch           spBatch;

        private Texture2D             texture;

        //constructor

        public Game1() {

            graphics = new GraphicsDeviceManager(this);

            content  = new ContentManager(Services);

        }

 

        //초기화

        protected override void Initialize() {

            base.Initialize();

        }

 

        //그래픽스 컨텐트를 읽어온다.

        protected override void LoadGraphicsContent(bool loadAllContent) {

            if (loadAllContent) {       

                spBatch = new SpriteBatch(graphics.GraphicsDevice);

                texture = content.Load<Texture2D>("xna"); //Asset이름을 지정한다.

            }

        }

 

        //그래픽스 컨텐트를 놓아준다.

        protected override void UnloadGraphicsContent(bool unloadAllContent) {

            if (unloadAllContent == true) {

                content.Unload();

            }

        }

 

        //그리기

        protected override void Draw(GameTime gameTime) {

           

            graphics.GraphicsDevice.Clear(Color.White);

 

            

            spBatch.Begin();

            Vector2 pos = new Vector2(0,0);

            spBatch.Draw(texture,pos,Color.White);

            spBatch.End();

 

           

            base.Draw(gameTime);

        }

    }

}

 

 

그렇다면 2개이상의 그림표시는 어떻게 할까요..

 

다음과 같이 코드를 약간만 바꾸어주면 같은 이미지 파일을 색다르게 표현할 수도 있습니다.

 

해당 코드는 첨부파일에..  요컨데, 텍스쳐를 읽어서 Vector2로 포지션을 잡아주고 spBatch.Draw를통해 해당 텍스쳐와

위치, 그리고 기본색을 지정해주면 됩니다.

 

 또한 그림을 바로 이어서 표시하고 싶을때에는 position을 잘 잡아주면 되는데 일일이 수동으로 위치를 잡아주기 보다는

이전 texture.Width, 이전 texture.Height를 이용하여 위치를 잡아주시면 원하는 대로..(예를 들어 바둑판형식) 표시할 수 있습니다.


반응형

'프로그래밍' 카테고리의 다른 글

키 이벤트 제어하기  (0) 2009.07.09
이미지에 애니메이션 붙이기  (0) 2009.07.09
헬로 월드! in XNA  (0) 2009.07.09
XNA의 컨텐츠와 파이프라인  (0) 2009.07.09
그래프의 용어  (0) 2009.05.26

댓글