2009-09-13 12 views
20

Cómo el tamaño de escala relativa de User Control como la imagen (en el editor de imágenes).¿Cómo el tamaño de escala relativo de Control de usuario?

Ejemplo (100%):

alt text http://stegnar.com/pic/normalPicture.png

en escala UC (70%):

alt text http://stegnar.com/pic/normalPicture70percent.png

Bien puedo lograr esto en editor de imágenes, pero me gustaría en WPF . :) Necesito esto para ajustar mi aplicación a una resolución de pantalla diferente, sin ocultar nada (sin barras de desplazamiento).

Respuesta

29

Puede probar el control ViewBox que aumenta o disminuye su contenido para que ocupe el espacio disponible.

<Window x:Class="WpfApplication1.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="clr-namespace:WpfApplication1" 
Title="Window1"> 
<Grid> 
    <Viewbox StretchDirection="Both" Stretch="Uniform"> 
     <local:UserControl1 Height="600" Width="600"/> 
    </Viewbox> 
</Grid> 

+0

¡Estupendo! Eso es exactamente lo que necesito. –

5

El uso de Viewbox (como se dijo por Milan Nankov) es una gran idea. Una cosa de la que debo advertir es que también amplía o aleja otros aspectos visuales también.

Por ejemplo, un cuadro de texto con una dimensión 200 X 1000 es muy diferente de un cuadro de texto con una dimensión 20 X 100 ampliada en 10x.

WPF ofrece muchas opciones de diseño que pueden cambiar la dimensión de los controles de acuerdo con el tamaño del contenedor. Pero no cambia el tamaño del texto. Viewbox supera este problema, pero presenta otro problema. Compruebe la imagen a continuación que muestra el mismo cuadro de texto en una vista antes y después de hacer zoom.

Artifacts introduced by the use of viewbox

Un truco que podría ser utilizado consiste en colocar cada bloque de texto en un negatoscopio. Pero supongo que sería una exageración, y realmente no tengo ningún respaldo para este truco. Por favor revise usted mismo y responda si es práctico o no.

Otro truco podría ser unir la altura del control al tamaño de la fuente. Necesitaríamos un convertidor en ese caso. Por favor refiérase a esta respuesta .. Resize font in TextBox in Grid

5

puede colocar todo el recipiente en un ViewBox

<Viewbox StretchDirection="Both" Stretch="Uniform"> 
    <Grid>...</Grid> 
</Viewbox> 

que no tiene que colocar cada bloque de texto simple en ella!

Cuestiones relacionadas