2010-03-19 21 views
9

Je voudrais afficher une image composée de deux images.Comment superposer une image sur une autre?

Je veux l'image rectangle.png montrer avec l'image sticker.png sur haut de celui-ci avec son main gauche coin au pixel 10, 10.

Voici aussi loin que J'ai, mais comment puis-je combiner les images?

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; 

Répondre

12

Vous avez besoin d'un Groupe spécial d'ajouter les contrôles de l'image à. Une Grille ou un Canvas le permet, mais j'irais avec la Grille car cela contraindrait les contrôles Image (les étirant ou les réduisant au besoin).

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

excellent, c'est l'approche que j'ai utilisée, juste besoin d'ajouter aussi un imageSticker.VerticalAlignment = VerticalAlignment.Top; –

+0

Ce n'est pas une superposition réelle. Et si je voulais utiliser l'image combinée sur un bouton? Cela ne marcherait pas. – bobbyalex

+0

Pourquoi pas? Le bouton peut certainement avoir cette grille comme son contenu. –

2

Vous pouvez simplement mettre un contrôle d'image sur le dessus de l'autre contrôle de l'image dans votre vue. Placez les deux dans une grille ou un canevas et superposez l'une des images l'une au-dessus de l'autre. Cela vous permet également d'utiliser l'opacité pour faire un mélange, et fonctionne très bien.

Si vous avez besoin de les entrer dans la même image, il y a deux options ....

Vous pouvez faire un WritableBitmap sur la première image, puis « peinture » manuellement les autres pixels d'image sur en haut du premier. Cela peut alors agir comme une source d'image pour votre image à l'écran.

Sinon, vous pouvez faire la superposition je l'ai mentionné ci-dessus, et rendre cela dans un RenderTargetBitmap. Cela pourrait alors être utilisé comme source d'image.

Questions connexes