Pregunta

(Déjame darte un poco de contexto) Actualmente estoy diseñando una aplicación que se supone que genera una página A4 imprimible basada en algunos datos. Naturalmente, los píxeles independientes del dispositivo de WPF (96 píxeles / pulgada) no son una unidad de medida muy natural en el mundo del papel. Algo como milímetros sería más apropiado. Así que saqué mi calculadora y llegué a un factor de escala de alrededor de 3.779.

Resulta que simplemente abofetear todo lo que se supone que debe ir en la página en un ScaleTransform tiene un efecto secundario desagradable: Los tamaños de fuente también se escalan (naturalmente). Esto, sin embargo, no es lo que pretendía. Me gustaría que 12pt Arial se procesara como 12pt Arial se representaría normalmente.

¿Hay alguna otra manera de cambiar el sistema de coordenadas sin tener que llamar a extensiones o lo que sea para convertir cada coordenada, longitud, grosor, etc.? - o - ¿Hay alguna forma de asignar tamaños de fuente sobre la marcha , siendo DependencyProperties? ¿A través de un control personalizado que envuelve todo el contenido del papel, tal vez?

¿Fue útil?

Solución

Para los requisitos descritos, no necesita hacer nada especial, simplemente siga adelante y use centímetros como unidad de medida para los elementos WPF (es decir, sin ninguna transformación); la naturaleza misma de la independencia del dispositivo WPF le permite a lo siguiente:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="29.7cm" Width="21cm" FontSize="16pt">
    <Grid>
        <TextBlock Text="Sample" Height="1in" Width="1in" FontSize="12pt" 
            HorizontalAlignment="Center" VerticalAlignment="Center" 
            TextAlignment="Center"/>
    </Grid>
</Window>

Es decir: obtendrá una ventana A4 especificada en ' cm ' con un cuadro de texto cuadrado centrado especificado en ' en ' y una fuente especificada en ' pt '. Todos estos se escalarán correctamente mediante cualquier transformación que pueda aplicar adicionalmente, si es necesario (por ejemplo, a través de un control deslizante de zoom para el puerto de visualización de los usuarios), respetando sus tamaños relativos independientemente de que se especifique con diferentes unidades cada uno (es decir, uso mixto a voluntad).

Las unidades disponibles son px (predeterminado), en , cm y pt , ver por ejemplo FrameworkElement.Height para obtener detalles sobre sus especificaciones.

Otros consejos

También puede establecer tamaños en puntos (FontSize = " 10pt "), en pulgadas (FontSize = " 10in ") o en centímetros (FontSize = " 10cm "). Por supuesto, el tamaño real depende de la configuración de DPI de Windows y el DPI de su monitor o impresora en este caso.

Simplemente establezca el tamaño de fuente a 12 / 3.779 = 3.175 , ¿no? Asignarlo al objeto que lo contiene y debería llegar a todos los niños.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top