绘制BitmapSource的子区域

时间:2009-07-31 22:04:05

标签: wpf image bitmapsource

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

目前,我正在将Image加载为BitmapSource,而我是从显示地图的控件的Canvas类派生的。我正在覆盖OnRender方法,因此我可以获得DrawingContext。但是,DrawingContext.DrawImage似乎没有适当的重载,只能绘制图像的子图形;看起来我必须绘制整个图像。

如果我想将Image的子视图绘制到Canvas上,我应该使用什么?或者我应该使用Canvas以外的其他内容吗?

1 个答案:

答案 0 :(得分:0)

我将如何做到这一点:

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