2010-03-19 76 views
9

Me gustaría mostrar una imagen compuesta de dos imágenes.¿Cómo puedo superponer una imagen a otra?

Quiero imagen rectangle.png para mostrar la imagen sticker.png en la parte superior de ella con su mano izquierda esquina en el píxel 10, 10.

Aquí es la medida de lo Tengo, pero ¿cómo combino las imágenes?

Image image = new Image(); 
image.Source = new BitmapImage(new Uri(@"c:\test\rectangle.png")); 
image.Stretch = Stretch.None; 
image.HorizontalAlignment = HorizontalAlignment.Left; 

Image imageSticker = new Image(); 
imageSticker.Source = new BitmapImage(new Uri(@"c:\test\sticker.png")); 

image.OverlayImage(imageSticker, 10, 10); //how to do this? 

TheContent.Content = image; 

Respuesta

12

Necesita un panel para agregar ambos controles de Imagen a. Una cuadrícula o lienzo permitirá esto, pero yo iría con la cuadrícula, ya que limitará los controles de la imagen (por lo tanto, los estirará o encogerá según corresponda).

Image image = new Image(); 
image.Source = new BitmapImage(new Uri(@"c:\test\rectangle.png")); 
image.Stretch = Stretch.None; 
image.HorizontalAlignment = HorizontalAlignment.Left; 

Image imageSticker = new Image(); 
imageSticker.Source = new BitmapImage(new Uri(@"c:\test\sticker.png")); 
imageStiker.Margin = new Thickness(10, 10, 0, 0); 

Grid grid = new Grid(); 
grid.Children.Add(image); 
grid.Children.Add(imageSticker); 

TheContent.Content = grid; 
+0

excelentes, este es el método que usé, simplemente es necesario añadir también un imageSticker.VerticalAlignment = VerticalAlignment.Top; –

+0

Esto no es una superposición real. ¿Qué pasa si quiero usar la imagen combinada en un botón? Esto no funcionaría. – bobbyalex

+0

¿Por qué no? El botón definitivamente puede tener esa cuadrícula como su contenido. –

2

Usted puede simplemente poner un control de imagen en la parte superior del otro control de imagen en la vista. Coloque ambos en una cuadrícula o lienzo, y simplemente superponga una de las imágenes sobre la otra. Esto también le permite usar opacidad para hacer mezclas, y funciona muy bien.

Si necesita para obtenerlos en la misma imagen, hay un par de opciones ....

usted podría hacer un WritableBitmap de la primera imagen, a continuación, de forma manual "pintar" los otros píxeles de la imagen en parte superior de la primera. Esto puede actuar como una fuente de imagen para su imagen en la pantalla.

Como alternativa, podría hacer la superposición que mencioné anteriormente y procesarla en RenderTargetBitmap. Esto podría usarse como su fuente de imagen.

Cuestiones relacionadas