¿Cuál es la analogía de WPF para la unidad CSS em?analogía WPF para la unidad 'em'
Respuesta
AFAIK, no hay uno ahora mismo. Pero puede hacer que su deseo sea conocido here.
Una alternativa (y no sé si esto también es posible) sería medir qué tan grande es la fuente deseada, luego tomar esa como su unidad "ems", luego escalar usando esas "unidades".
<ScaleTransform ScaleX="1.2" ScaleY="1.2"></ScaleTransform>
parece ser más o menos la alternativa de 1.2em.
Desafortunadamente, no hay un equivalente en WPF de la unidad em. Todos los tamaños de fuente, etc. siempre se configuran en píxeles.
tamaño em es la anchura de la letra M mayúscula en la fuente de corriente, no hay ningún método apresto de la fuente dependiente en Wpf
BTW, WPF utiliza "dispositivo píxeles independientes" que son siempre 1/96 de una pulgadas (porque es uno pixeles en monitores de hoy en día) así:
- 1 píxel es 1/96 pulgadas
- 96 píxeles en una pulgada
- 1.33333 píxeles es un punto
- 3,779 p ixels es un mm
Esos son muy inexactos en los monitores porque casi todos los monitores informan una resolución de 96 ppp e ignoran el tamaño de píxel real, pero son muy útiles al imprimir.
Esto es lo que hice. Se creó una MarkupExtension que convierte el tamaño de la fuente en EM en función de la fuente asignada en la ventana.
Me gustaría dar las gracias http://10rem.net/blog/2011/03/09/creating-a-custom-markup-extension-in-wpf-and-soon-silverlight
y
http://tomlev2.wordpress.com/tag/markup-extension/
para proporcionar el conocimiento necesario.
[MarkupExtensionReturnType(typeof(double))]
public class EmFontSize : MarkupExtension
{
public EmFontSize() { }
public EmFontSize(double size)
{
Size = size;
}
[ConstructorArgument("size")]
public double Size { get; set; }
public override object ProvideValue(IServiceProvider serviceProvider)
{
if (serviceProvider == null)
return null;
// get the target of the extension from the IServiceProvider interface
IProvideValueTarget ipvt = (IProvideValueTarget)serviceProvider.GetService(typeof(IProvideValueTarget));
if (ipvt.TargetObject.GetType().FullName == "System.Windows.SharedDp")
return this;
DependencyObject targetObject = ipvt.TargetObject as DependencyObject;
var window = TryFindParent<Window>(targetObject);
if (window != null)
{
return window.FontSize * Size;
}
return 12 * Size;
}
public static T TryFindParent<T>(DependencyObject child) where T : DependencyObject
{
//get parent item
DependencyObject parentObject = GetParentObject(child);
//we've reached the end of the tree
if (parentObject == null) return null;
//check if the parent matches the type we're looking for
T parent = parentObject as T;
if (parent != null)
{
return parent;
}
else
{
//use recursion to proceed with next level
return TryFindParent<T>(parentObject);
}
}
public static DependencyObject GetParentObject(DependencyObject child)
{
if (child == null) return null;
//handle content elements separately
ContentElement contentElement = child as ContentElement;
if (contentElement != null)
{
DependencyObject parent = ContentOperations.GetParent(contentElement);
if (parent != null) return parent;
FrameworkContentElement fce = contentElement as FrameworkContentElement;
return fce != null ? fce.Parent : null;
}
//also try searching for parent in framework elements (such as DockPanel, etc)
FrameworkElement frameworkElement = child as FrameworkElement;
if (frameworkElement != null)
{
DependencyObject parent = frameworkElement.Parent;
if (parent != null) return parent;
}
//if it's not a ContentElement/FrameworkElement, rely on VisualTreeHelper
return VisualTreeHelper.GetParent(child);
}
}
Uso Muestra
xmlns:my="clr-namespace:FontSizeExample"
<TextBlock Text="Sample Font" FontSize="{my:EmFontSize 1.1}"/>
<TextBlock Text="Sample Font" FontSize="{my:EmFontSize .9}"/>
- 1. ¿Cómo puedo mostrar una imagen usando la unidad "em"?
- 2. ¿Alguien tiene una buena analogía para la inyección de dependencia?
- 3. Prueba de unidad Enlaces de WPF
- 4. Cómo hacer Hollywood Principio + DI + WPF + Unidad
- 5. Prueba de la unidad de WPF GUI marco
- 6. ¿Qué es la altura en em?
- 7. unidad prueba un comportamiento adjunto wpf
- 8. ¿Debo usar em o px?
- 9. diferencia entre px y em
- 10. Margen y relleno usando em
- 11. ¿Es válido hacer Ruby Gems una analogía con Java JAR?
- 12. ¿Cuál es el motivo para usar dicha sintaxis (0, _.Em)();
- 13. script para convertir hojas css de px a em
- 14. Usar Clojure para probar la unidad Java
- 15. ¿Cómo pruebo la unidad para EXC_BAD_ACCESS?
- 16. Cómo establecer la unidad para Paint.setTextSize()
- 17. CSS - tamaño de letra hijo usando em
- 18. html fallo em análisis en cromo
- 19. Unidad probando un enlace de datos en WPF
- 20. ¿Cuál es la diferencia entre px, em y ex?
- 21. Cuál es la diferencia entre EM Dash # 151; y # 8212 ;?
- 22. ¿Cómo se miden las medidas de CSS em para medir la altura o el radio del borde?
- 23. Mejor unidad para tamaños de fuente en CSS
- 24. Ejemplos de trabajo de EM :: Iterator
- 25. iconos para la aplicación WPF
- 26. ¿Cómo probar la unidad?
- 27. ¿Qué método usas para seleccionar la cantidad óptima de clústeres en k-medias y EM?
- 28. la expresión regular correcta para reemplazar em-dash con un "-" básico en java
- 29. Generación de pulsaciones de teclas mediante programación para pruebas de unidad WPF
- 30. Unidad para deshacerse del objeto