Tengo una aplicación con un cuadro de texto, y el ancho del cuadro de texto en la pantalla siempre debe ser de 17,5 centímetros en la pantalla del usuario.¿Cómo dar a un cuadro de texto un ancho fijo de 17,5 cm?
Esto es lo que he intentado hasta ahora:
const double centimeter = 17.5; // the width I need
const double inches = centimeter * 0.393700787; // convert centimeter to inches
float dpi = GetDpiX(); // get the dpi. 96 in my case.
var pixels = dpi*inches; // this should give me the amount of pixels
textbox1.Width = Convert.ToInt32(pixels); // set it. Done.
private float GetDpiX()
{
floar returnValue;
Graphics graphics = CreateGraphics();
returnValue = graphics.DpiX;
graphics.Dispose(); // don’t forget to release the unnecessary resources
return returnValue;
}
Pero esto me da diferentes tamaños con diferentes resoluciones.
Me da 13 cm con 1680 x 1050 y 21,5 cm con 1024 x 768.
¿Qué estoy haciendo mal?
"el cuadro de texto en la pantalla siempre debe tener 17,5 centímetros en la pantalla del usuario." - ese es un requisito peculiar .... –
Sí ... lo es. Si su cliente le dio este requisito, dígale que es un 'tard'. – mpen
Tal vez un requisito extraño, pero una pregunta interesante, no obstante. ¿Qué hay de la configuración de la resolución de pantalla de forma manual, calculando manualmente el DPI que tiene, y ver si coincide con la salida de GetDpiX() y GetDpiY()? ¿Es posible que no todos los monitores sean compatibles con esta funcionalidad? – Bryan