0

我正在 WPF 中为基于 2D 瓦片的游戏创建关卡编辑器。我正在尝试找出加载瓦片集Image文件并将每个瓦片渲染到适当位置以重建地图的最佳方法。

目前,我正在加载Imageas a BitmapSource,并且我从Canvas显示地图的控件的类派生。我正在重写该OnRender方法,以便获得一个DrawingContext. 但是,DrawingContext.DrawImage似乎没有适当的重载来仅绘制图像的子矩形;看起来我必须绘制整个图像。

如果我想将 a 的子矩形绘制Image到 a 上,我应该使用什么Canvas?还是我应该使用 a 以外的东西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 回答