2009-09-25 5 views
1

J'essaye de dessiner un ensemble d'images dans un Image dans WPF, potentiellement en haut à gauche, mais peu importe ce que je fais, soit le Image, soit le DrawingImage ou Les DrawingGroup provoquent l'affichage par défaut de l'image la plus proche du coin supérieur gauche dans le coin supérieur gauche de l'image.DrawingImage dessine toujours en haut à gauche, indépendamment des coordonnées fournies

Voici le code:

XAML:

<Canvas Grid.Column="1" Name="Canvas"> 
    <Image Name="imgLevel"> 
     <Image.Source> 
      <DrawingImage> 
       <DrawingImage.Drawing> 
         <DrawingGroup> 
          <ImageDrawing Rect="120, 120, 100, 100" ImageSource="" /> 
          <ImageDrawing Rect="300, 300, 100, 100" ImageSource="" /> 
         </DrawingGroup> 
       </DrawingImage.Drawing> 
      </DrawingImage> 
     </Image.Source> 
    </Image> 
</Canvas> 

Peu importe ce que je mets les coordonnées pour la première ImageDrawing, il est toujours dans le coin supérieur gauche.

Existe-t-il un moyen de contourner ce problème? Plus important encore, je veux éventuellement être en mesure de spécifier des nombres négatifs à ce Rect. Est-ce possible?

+0

Ainsi, la toile provoquait le déplacement en haut à gauche, mais en supprimant la toile, une des classes supposait qu'elle savait mieux où placer les images, et elle me permettait de les pousser hors des limites du contrôle. Aucune suggestion? – Jeff

Répondre

1

Y a-t-il une raison quelconque pour laquelle vous ne pouvez pas utiliser les propriétés Canvas.Left et Canvas.Top jointes sur le contrôle Image? Comme ceci:

<Canvas Name="Canvas" Grid.Column="1"> 
    <Image Canvas.Left="-5" Canvas.Top="-10" Name="imgLevel"> 
     <Image.Source> 
     </Image.Source> 
    </Image> 
</Canvas> 
+0

Finalement, j'espère avoir plusieurs images qui seront ajoutées/retirées du groupe de dessin quand elles entrent et sortent des limites. – Jeff

1

Ajouter quelque chose à votre groupe de dessin qui est positionné à votre choix en haut à gauche (par exemple un RectangleGeometry qui couvre toute la zone que vous voulez, mais il a une brosse transparente).

Ensuite, lorsque DrawingImage obtient les limites de l'ensemble du groupe, il sera forcé à au moins la taille de votre géométrie «invisible».

0

Je ne comprends pas pourquoi, mais en plaçant un Rectangle d'un pixel de large (en utilisant une brosse non visible) dans l'origine du DrawingGroup résout ce problème. Il serait bon de savoir quelles règles régissent ce comportement dans WPF.