2014-09-13 6 views
0

학습 목적으로 매우 간단한 게임을 만들려고 노력하고 있지만 SharpDX와는 어려움을 겪고 있습니다. 기본적으로 내가 달성하고자하는 것은 : 여러 비트 맵 이미지를 가져 와서 특정 x 및 y 좌표의 창에 표시하는 것입니다. 그 후, 나는 그 이미지를 다시 디스플레이하는 창을 지울 것이다. 그러나 다른 xy 좌표 (기본적으로 매우 기본적인 게임 루프, 기본적으로 이미지는 초당 여러 번 표시 될 것이다)를 지울 것이다. 컴파일 할 때SharpDX에서 비트 맵을 표시하는 방법은 무엇입니까?

using SharpDX; 
using SharpDX.Toolkit; 

internal sealed class MyGame : Game 
{ 
    private readonly GraphicsDeviceManager _graphicsDeviceManager; 

    public MyGame() 
    { 
     _graphicsDeviceManager = new GraphicsDeviceManager(this); 
    } 

    protected override void Draw(GameTime gameTime) 
    { 
     GraphicsDevice.Clear(Color.CornflowerBlue); 


     base.Draw(gameTime); 
    } 
} 
------- 
public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     using (var game = new MyGame()) 
      game.Run(); 
    } 
} 

, 그것은 단순히 파란색 배경 창을 엽니 다 :

나는이 코드를 가지고있다.

그런 다음 나는 두 개의 이미지가 있습니다

var img = new BitmapImage(new Uri("C:/img/pic1.png")); 
var img1 = new BitmapImage(new Uri("C:/img/pic2.png")); 

을 그리고 문제가 자리하고있는 곳이 내가이 두 이미지를 가지고 실제로 윈도우에 표시하는 방법을 알아낼 수없는 생각이다. img은 x10 y50 좌표 (즉, 창의 왼쪽에서 10 픽셀, 위쪽에서 50 픽셀) 및 x200 y150 좌표에서 img1으로 표시되어야합니다.

나는 해결책이 쉽다는 것을 확신하지만, 나는 그것을 알아낼 수 없다.

답변

1

인사이드 MyGame.

우선 LoadContent 방법에 텍스처로드 : Draw 다음에

private Texture2D myTexture; 

protected override void LoadContent()   
{ 
    this.myTexture = this.Content.Load<Texture2D>("Path to img"); 
} 

단계;

protected override void Draw(GameTime gameTime) 
{ 
    var sprite = new SpriteBatch(this.GraphicsDevice); 
    sprite.Begin(); 

    sprite.Draw(this.myTexture, 
        new Rectangle(10, 50, // position: x and y coordiantes in pixels 
            /* width and height below 
              - do not remeber order: */ 
            25, 25), 
        Color.White); 

    sprite.End(); 

    base.Draw(gameTime); 
} 

SharpDX으로 무엇이든 그릴 수있는 기본적인 방법입니다.