Hey. Tengo una imagen de 480 x 800 y me gustaría colocar esto en mi mapa de distribución. Intento dividir la imagen en una cuadrícula (6 x 10) y asignar a cada tesela esa parte específica de la imagen. Esencialmente, el mapa de mosaicos se verá como una imagen grande ya que cada mosaico tiene la parte relevante de la imagen adjunta. ¿Cuál es la mejor manera de hacer esto? He intentado examinar cada tesela y dibujarla en un mapa de bits de Writeable, pero todas las imágenes son iguales.Romper imagen en mosaicos
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 e Y) son los justos los índices que se utilizan cuando se repite a través de la tilemap, 80 es la altura y la anchura del azulejo y mainWb
es la gran imagen que quiero dividir. Gracias por cualquier ayuda.
edición: Código de bucle completo:
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);
}
}
La clase Tile
es un simple lienzo de 80x80 con un control Image llama img
. El método SetImage
anterior es la siguiente:
public void SetImage(WriteableBitmap wb)
{
img.Source = wb;
}
Ese código parece correcto. ¿Podrías publicar todo el ciclo? –
@Olivier Payen - He agregado el ciclo completo. – Skoder