2017-04-06 6 views
1

Ich habe eine TextBox, in der ich ein Bild als Hintergrund hinzufügen möchte. Der erste Versuch ist dies:Ich versuche, das Hintergrundbild einer TextBox zu skalieren, aber es ist abgeschnitten

<TextBox Text="{Binding Titulo}" Height="Auto" HorizontalAlignment="Stretch" Margin="5,5,5,5" Name="txtTitulo" VerticalAlignment="Stretch" 
     TextAlignment="Center" 
     FontSize="30" 
     Padding="0,20,0,0" 
     FontWeight="Heavy" 
     BorderBrush="red" 
     BorderThickness="5"> 
    <TextBox.Background> 
     <ImageBrush ImageSource="../Imagenes/Logo (233x251) - fondo transparente (test).png" AlignmentX="Center" Stretch="None" AlignmentY="Center"> 
     </ImageBrush> 
    </TextBox.Background> 
</TextBox> 

Das Ergebnis in diesem Fall ist dies:

enter image description here

Wenn ich diesen Code verwenden, das verwendet verwandeln:

<TextBox Text="{Binding Titulo}" Height="Auto" HorizontalAlignment="Stretch" Margin="5,5,5,5" Name="txtTitulo" VerticalAlignment="Stretch" 
     TextAlignment="Center" 
     FontSize="30" 
     Padding="0,20,0,0" 
     FontWeight="Heavy" 
     BorderBrush="red" 
     BorderThickness="5"> 
    <TextBox.Background> 
     <ImageBrush ImageSource="../Imagenes/Logo (233x251) - fondo transparente (test).png" AlignmentX="Center" Stretch="None" AlignmentY="Center"> 
      <ImageBrush.Transform> 
       <ScaleTransform ScaleX="0.5" ScaleY="0.5" CenterX="0" CenterY="0" /> 
      </ImageBrush.Transform> 
     </ImageBrush> 
    </TextBox.Background> 
</TextBox> 

Das Ergebnis ist dies:

enter image description here

Das Bild, das ich skalieren möchten, ist dies:

enter image description here

Es scheint, dass, wenn es skaliert, um die Größe zu reduzieren, aber es taucht das Bild auf die Größe der Textbox.

Was ich tun möchte, ist das Bild skalieren, um das vollständige Bild zu sehen, aber ich bin nicht in der Lage, es zu bekommen.

Antwort

1

Sie müssen Uniform als Wert für die Stretch Eigenschaft verwenden. Wie folgt aus:

Stretch="Uniform" 

So würde der Code wie folgt aussehen:

<TextBox Text="{Binding Titulo}" Height="Auto" HorizontalAlignment="Stretch" Margin="5,5,5,5" Name="txtTitulo" VerticalAlignment="Stretch" 
     TextAlignment="Center" 
     FontSize="30" 
     Padding="0,20,0,0" 
     FontWeight="Heavy" 
     BorderBrush="red" 
     BorderThickness="5"> 
    <TextBox.Background> 
     <ImageBrush ImageSource="../Imagenes/Logo (233x251) - fondo transparente (test).png" AlignmentX="Center" Stretch="Uniform" AlignmentY="Center"/> 
    </TextBox.Background> 
</TextBox> 

Der Uniform Wert macht das Bild den gesamten verfügbaren Raum füllen, während seine ursprüngliche Skala zu halten.

+0

Als Randnotiz, da Sie 'None' als Wert für die Eigenschaft' Stretch' verwendet haben, hat Ihr Bild seine ursprüngliche feste Größe beibehalten. Wenn Sie also Ihre Textbox skalieren würden, würde das Bild nicht zusammen skalieren, da es eine feste Größe hat. –

+0

Durch erneutes Lesen Ihrer Frage bin ich mir nicht sicher, was Sie erreichen möchten. Möchten Sie, dass das Bild in die Textbox passt (das Planetenbild in der Textbox) oder möchten Sie, dass das Bild außerhalb der Textboxbegrenzungen (der Textbox im Planetenbild) angezeigt wird? Die Lösung, die ich oben gepostet habe, passt das Bild in das Textfeld (das Planetenbild bleibt in der Textbox). –

Verwandte Themen