おい。480 x 800の画像があり、これをタイルマップに配置したいと思います。画像をグリッド(6 x 10)に分割し、各タイルに画像の特定の部分を割り当てようとしています。基本的に、各タイルには画像の関連部分が添付されているため、タイルマップは1つの大きな画像のように見えます。これを行うための最良の方法は何ですか?各タイルを調べてWriteableBitmapに描画しようとしましたが、すべての画像は同じです。
WriteableBitmap wb = new WriteableBitmap(80,80);
Rect src= new Rect(x*Width,y*Height, 80, 80);
Rect dest= new Rect(0, 0, 80, 80);
wb.Blit(dest, mainWb, src);
tile.SetImage(wb);
(xとy)はタイルマップを反復処理するときに使用されるインデックスであり、80はタイルの高さと幅でmainWb
あり、分割したい大きな画像です。助けてくれてありがとう。
編集:完全なループコード:
var mainImage = Application.GetResourceStream(new Uri("MainImage.jpg", UriKind.Relative)).Stream;
WriteableBitmap mainWb = new WriteableBitmap(480, 800);
mainWb.SetSource(mainImage);
for (int x = 0; x < 6; x++)
{
for (int y = 0; y < 12; y++)
{
Tile tile = new Tile();
WriteableBitmap wb = new WriteableBitmap(80,80);
Rect src = new Rect(x*Width,y*Height, 80, 80);
Rect dest = new Rect(0, 0, 80, 80);
wb.Blit(dest, mainWb, src);
tile.SetImage(wb);
Canvas.SetLeft(tile, x * WIDTH);
Canvas.SetTop(tile, y * HEIGHT);
LayoutRoot.Children.Add(tile);
ls.Add(tile);
}
}
このTile
クラスは、と呼ばれるImageコントロールを備えた単純な80x80キャンバスimg
です。上記のSetImage
方法は次のとおりです。
public void SetImage(WriteableBitmap wb)
{
img.Source = wb;
}