visual tamaño studio propiedades programacion móviles modificar letra desarrollo curso como cambiar aplicaciones .net windows vb.net winforms dpi

.net - tamaño - ¿Cómo puedo detectar si la fuente del usuario(DPI) está configurada como pequeña, grande o alguna otra cosa?



manual de programacion android pdf (2)

Necesito averiguar si la pantalla del usuario está configurada en 96 ppp normales (tamaño pequeño), fuentes grandes de 120 ppp u otra cosa. ¿Cómo hago eso en VB.NET (preferido) o C #?


Eche un vistazo a las propiedades DpiX y DpiY . Por ejemplo:

using (Graphics gfx = form.CreateGraphics()) { userDPI = (int)gfx.DpiX; }

En VB:

Using gfx As Graphics = form.CreateGraphics() userDPI = CInt(gfx.DpiX) End Using


La mejor manera es simplemente permitir que el formulario se redimensione automáticamente, en función de la configuración de DPI actual del usuario. Para hacerlo, simplemente configure la propiedad AutoScaleMode.Dpi en AutoScaleMode.Dpi y habilite la propiedad AutoSize . Puede hacer esto desde la Ventana de Propiedades en el diseñador o mediante el código:

Public Sub New() InitializeComponent() Me.AutoScaleMode = AutoScaleMode.Dpi Me.AutoSize = True End Sub

O bien, si necesita conocer esta información mientras dibuja (como en el método del controlador de eventos Paint ), puede extraer la información de las propiedades DpiX y DpiY de la instancia de la clase Graphics .

Private Sub myControl_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Dim dpiX As Single = e.Graphics.DpiX Dim dpiY As Single = e.Graphics.DpiY '' Do your drawing here '' ... End Sub

Finalmente, si necesita determinar el nivel de DPI sobre la marcha, tendrá que crear una instancia temporal de la clase Graphics para su formulario y verificar las propiedades DpiX y DpiY , como se muestra arriba. El método CreateGraphics de la clase de formulario hace que esto sea muy fácil de hacer; solo asegúrese de ajustar la creación de este objeto en una instrucción Using para evitar pérdidas de memoria. Código de muestra:

Dim dpiX As Single Dim dpiY As Single Using g As Graphics = myForm.CreateGraphics() dpiX = g.DpiX dpiY = g.DpiY End Using