C#, WinForms désactiver DPI
J'ai une application WinForm qui accueille de nombreuses images. Quand j'ai mis l'application sur un Win7 machines a une résolution de 120, complètement ruines de l'apparence de la forme. Est-il un moyen de désactiver la mise à l'échelle pour mon formulaire?
Je suis conscient que c'est quelque chose qui n'est pas conseillé et que le DPI devrait être transparente et manipulés par le système d'exploitation. Mais quand il s'agit d'une peau d'application, les images ne sont pas à l'échelle. Je n'ai pas le luxe de la création d'images pour tous les DPI variations, donc merci de ne pas suggérer que comme une réponse.
OriginalL'auteur MarkP | 2010-10-24
Vous devez vous connecter pour publier un commentaire.
Vous aurez plus de problèmes lorsque vous modifiez la AutoScaleMode de la propriété. L'augmentation de la résolution modifie également le système de taille de police. Forcément, les tailles de police sont exprimées en points, 1 /72e de pouce. Les polices doivent être plus grands pour obtenir la même taille de point lorsque la résolution augmente et conserver le texte tout aussi lisible lorsqu'il est vu de la même distance.
Puisque la contrôles de ne pas redimensionnée plus, le texte, disons, d'un bouton n'est plus adapté. Un moyen de lutter contre cela est de changer la taille de la police sur les contrôles de manière proportionnelle. Facile si vous laissez tous les contrôles hériter de la forme de la police, en changeant simplement le formulaire de la propriété de Police met automatiquement à jour les commandes. L'inconvénient évident est que l'utilisateur aura un moment plus difficile la lecture du texte. En particulier, cela se gâte quand le DPI va à 150 points par pouce, et au-delà, votre INTERFACE utilisateur se transforme en un inutilisables timbre-poste.
Oui, les images de fond nécessaire pour obtenir la mise à l'échelle pour s'adapter aux plus grandes contrôle ou de la forme. Un pixel de l'image de maintenant n'a plus de cartes un-à-un à un pixel de l'écran. Le Graphique par défaut.InterpolationMode est la valeur d'un assez décent travail de filtrage de l'image. Mais cela dépend de la nature de l'image comment ça tourne. Une photo presque toujours à des échelles très bien. Finement détaillée de la ligne de l'art et le texte n'en a pas. Choisir le bon type d'image va un long chemin pour éviter d'avoir à créer distinctes.
Ce problème ne va pas aller loin jusqu'à ce que les moniteurs commencent à avoir le genre de la résolution d'une imprimante. Nous sommes encore un long chemin à partir de 600 dpi pour les moniteurs de bureau. Les téléphones seront les premiers.
OriginalL'auteur Hans Passant
Vous pouvez définir la
AutoScaleMode
propriété de la forme deNone
.En combinant ceci avec manuellement la mise à l'échelle des polices des contrôles (comme le suggère une autre solution ici) a résolu le problème pour moi.
OriginalL'auteur Jeff Ogata
Ajouter une ligne de code avant de l'auto-généré appel InitializeComponent dans la Form1-constructeur résolu pour moi:
En combinant ceci avec réglage AutoScaleMode à Aucun résolu le problème pour moi
ne fonctionne pas sur windows 10 à 150% ou 200%, même avec
AutoScaleMode = None
OriginalL'auteur Helper