嘿。 我有一个480×800的图像,并希望将其放置在我的地图上。我试图将图像分割成网格(6 x 10),并为每个图块分配图像的特定部分。本质上,由于每个图块都附加了图像的相关部分,所以该图块看起来像一个大图像。这样做的最好方法是什么? 我已经尝试了解每个tile并将其绘制到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)是刚通过tilemap的迭代时所使用的索引,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
类是与图像控制简单的80×80画布称为img
。上述SetImage
方法是这样的:
public void SetImage(WriteableBitmap wb)
{
img.Source = wb;
}
该代码似乎是正确的。你能发布整个循环吗? – 2011-05-19 12:19:03
@ Olivier Payen - 我已经添加了完整的循环。 – Skoder 2011-05-19 14:36:19