2009-07-31 55 views
0

我正在WPF中爲基於2D瓦片的遊戲創建一個關卡編輯器。我試圖找出加載瓦片集Image文件並將每個瓦片渲染到適當位置以重建地圖的最佳方法。繪製一個BitmapSource的子區域

目前,我正在加載Image作爲BitmapSource,並且我從Canvas類派生出用於顯示地圖的控件。我重寫了OnRender方法,所以我可以得到一個DrawingContext。但是,DrawingContext.DrawImage似乎沒有適當的超載,只能繪製圖像的一個子目錄;它看起來像我必須繪製整個圖像。

如果我想將Image的子項劃到Canvas上,應該如何使用?或者我應該使用Canvas以外的東西?

回答

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屬性。