2009-05-07 17 views
2

フリータイムにデザインしているXNAゲームのマップエディタで作業しています。マップで使用されている芸術作品は1つのテクスチャに格納され、長方形は座標と幅などで保存されます。イメージの一部をビットマップにレンダリングするC#Winforms

winformsアプリケーションでは、リストボックスから必要なセグメントを選択して追加できます可能なセグメントの配列。

問題選択したセグメントのプレビューを表示したいと思います。共通のテクスチャに格納されているため、画像を表示するピクチャボックスを設定するだけでは問題ありません。

矩形情報(.x、.y、.width、.height)を使って、ピクチャボックス内のイメージのセクションのみを表示したり、セクションをビットマップにblitして表示したりできますか?

多くのおかげ

マイケル・アレン

答えて

9

おそらく、GDIライブラリを調べる必要があります。 ImageまたはBitmapオブジェクトとGraphics.DrawImage()を一緒に使用すると、探しているものが得られます。

private void DrawImageRectRect(PaintEventArgs e) 
{ 

    // Create image. 
    Image newImage = Image.FromFile("SampImag.jpg"); 

    // Create rectangle for displaying image. 
    Rectangle destRect = new Rectangle(100, 100, 450, 150); 

    // Create rectangle for source image. 
    Rectangle srcRect = new Rectangle(50, 50, 150, 150); 
    GraphicsUnit units = GraphicsUnit.Pixel; 

    // Draw image to screen. 
    e.Graphics.DrawImage(newImage, destRect, srcRect, units); 
} 

ピクチャボックスとGDIを使用する代わりに、WinFormでXNAを使用することもできます。まだ100%サポートされていませんが、そのチュートリアルはhereです。

+0

申し訳ありませんが、私は自分自身をより明確にすべきでした。 Winformsアプリケーションには、MapDataクラスから与えた例に似たシステムを使用してマップを表示するXNAレンダリングコンポーネントが含まれています。私はすべてのマップの相互作用とそれまでの作業を非常にうまくいっています。 MapDataマップオブジェクト内には、Texture2の配列があります。この配列には、XNAコンポーネントがタイルセクションとセグメントセクションを描画するために必要なすべてのテクスチャが含まれています。 私が探しているのは、セグメント定義の配列から四角形を取り、選択したセグメントまたはタイルのプレビューとして、winformsアプリケーション –

+0

内で定義されているテクスチャの一部をレンダリングすることです。私はこのアプローチを試みますが、私はDrawImageがTexture2を扱うことができないと確信していません –

+0

私はXNAのエキスパートではありません。つまり、「Texture2」の代わりにTexture2Dを使用しています。 SpriteBatchを使用すると、テクスチャを読み込み、Draw()関数を使用して必要なものを実現することができます。良いチュートリアルはここにあります:http://msdn.microsoft.com/en-us/library/bb194908.aspx 宛先とソースの矩形を取るDraw()関数を必ず使用してください。 – Balk

0

あなたはGraphics.drawImageをを使用することができます()、それは長方形を受け入れます。

関連する問題