Convertir les Pixels en Pouces et vice versa en C#
Je suis à la recherche pour convertir pixes en pouces, et vice-versa. Je comprends que j'ai besoin de DPI, mais je ne suis pas sûr de la façon d'obtenir cette information (par exemple, je n'ai pas le Graphics
objet, ce qui n'est pas une option).
Est-il un moyen?
DPI de quoi? écran? imprimante? ...?
OriginalL'auteur AngryHacker | 2009-01-23
Vous devez vous connecter pour publier un commentaire.
Sur un appareil vidéo, toute réponse à cette question est généralement pas très précis. Le plus simple exemple d'utilisation pour voir pourquoi c'est le cas c'est un projecteur. La résolution de sortie est, disons, 1024 x 768, mais le DPI varie selon la distance de l'écran du projecteur apeture. WPF, par exemple, suppose toujours 96 DPI sur un dispositif vidéo.
En supposant que vous avez encore besoin d'une réponse, quelle que soit la précision, et vous n'avez pas un objet Graphique, vous pouvez en créer un à partir de l'écran avec certains P/Invoke et obtenir la réponse.
OriginalL'auteur codekaizen
Il y a, physiquement, aucun moyen réel sans connaître le DPI. Les Pixels sont discrets, les pouces ne sont pas, si vous parlez pouces sur votre moniteur, vous devez savoir (au moins) la résolution et le format des pixels) et la taille du visible zone de surveillance afin de calculer votre DPI. La résolution est généralement possible de récupérer quelque part (je ne suis pas un C# ou .NET programmeur, donc je ne peux pas vous aider là-bas), mais la taille de l'écran est généralement pas disponible. Si une estimation est assez bon alors à l'utilisateur d'entrer la taille de l'écran (c'est à dire 21" ou quoi que ce soit) et les solutions de DPI:
donner (en supposant que vous savez de la diagonale et la résolution)
C'est juste une estimation, que les moniteurs ne sont jamais exactement 21" (.. ou quoi que ce soit), et le pixel aspect ratio n'est presque jamais exactement 1:1.
Si vous parlez pouces sur papier, alors, naturellement, vous avez besoin de connaître la résolution de votre imprimante (ou, plus précisément, les paramètres actuels de l'imprimante).
Résoudre l'équation pour les DPI, en supposant que le reste est connu.
Comment pourrais-je connaître la longueur de la diagonale de l'écran? Mon application va s'exécuter sur les ordinateurs, je ne les contrôle pas.
Soit vous faire une estimation approximative et suppose que tout le monde a un 19" ou 21" ou quelque chose; si c'est vraiment important, alors vous devez demander à l'utilisateur, personne ne le sait (voir la réponse en commentant les projecteurs), mais dans ce cas, vous voudrez probablement utiliser une autre technologie pour obtenir une réponse plus précise.
C'est un assez inutile de répondre. Il est à la recherche d'un système d'appel pour lui dire ce que windows est en supposant que est le DPI (comme je suis).
OriginalL'auteur falstro
Vous pouvez créer l'objet Graphique tout simplement en appelant
this.CreateGraphics()
(ou plus généralementControl.CreateGraphics()
), puis utilisez la cascade dpix et DpiY propriétés comme vous semblez le savoir. Juste n'oubliez pas de jeter l'objet graphics après la création de ce (idéalement avec l'Aide d'instruction).Si vous n'êtes pas à l'aide de WinForms, alors s'il vous plaît laissez-nous savoir quel genre d'application, il est.
Il a fait état qu'il utilise WPF, ce qui n'est pas WinForms. En utilisant les deux ensemble, peuvent causer de sérieux maux de tête.
Non, il n'a pas en l'état il est l'utilisation de WPF. En effet, la référence à la
Graphic
semble impliquent fortement WinForms. Merci pour le vote, de toute façon.OriginalL'auteur Noldorin