J'ai une application avec une zone de texte, et la largeur de la zone de texte sur l'écran doit toujours être de 17,5 centimètres sur l'écran de l'utilisateur.Comment donner une zone de texte d'une largeur fixe de 17,5 cm?
C'est ce que j'ai essayé jusqu'à présent:
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;
}
Mais cela me donne des tailles différentes avec des résolutions différentes.
Il me donne 13 cm avec 1680 x 1050 et 21,5 cm avec 1024 x 768.
Qu'est-ce que je fais mal?
"zone de texte sur l'écran doit toujours être de 17,5 centimètres sur l'écran de l'utilisateur." - C'est une exigence particulière .... –
Ouais ... c'est. Si votre client vous a donné cette exigence, dites-lui qu'il est un "tard". – mpen
Peut-être une exigence étrange, mais une question intéressante néanmoins. Que diriez-vous de définir la résolution de l'écran manuellement, en calculant manuellement le DPI que vous avez, et voir si elle correspond à la sortie de GetDpiX() et GetDpiY()? Il se pourrait que tous les moniteurs ne supportent pas cette fonctionnalité? – Bryan