0

2D タイル ベースのゲーム用に WPF でレベル エディターを作成しています。Imageタイルセットファイルを読み込み、各タイルを適切な場所にレンダリングしてマップを再構築する最善の方法を見つけようとしています。

Image現在、 をとしてロードしており、マップを表示するコントロールのクラスBitmapSourceから派生しています。を取得できるようにメソッドCanvasをオーバーライドしています。ただし、画像のサブレクトのみを描画する適切なオーバーロードがないようです。画像全体を描画する必要があるようです。OnRenderDrawingContextDrawingContext.DrawImage

Imageのサブレクトを に描画したい場合、何を使用すればよいCanvasですか? または、以外のものを使用する必要がありCanvasますか?

4

1 に答える 1

1

これが私がそれを行う方法です:

protected override void OnRender(DrawingContext dc)
{
    BitmapImage source = new BitmapImage();
    source.BeginInit();
    source.UriSource = new Uri(@"pack://application:,,,/YourProject;component/YourImage.jpg");
    source.SourceRect = new Int32Rect(0, 0, 200, 200);
    source.EndInit();

    dc.DrawImage(source, Rect.Parse("0, 0, 200, 200"));
    base.OnRender(dc);
}

これを行うプロパティはBitmapImage.SourceRectです。

于 2009-07-31T23:26:26.063 に答える