Programación de Gráficos - Cambio de Resolucion Complejo

 
Vista:

Cambio de Resolucion Complejo

Publicado por Diego (1 intervención) el 26/07/2004 07:35:29
Tengo que hacer una presentaciones y preciso algo que, me cambie la resolucion de la pantalla a la que yo quiera por ejemplo 800 x 600... pero que despues de ejecutada la presentacion, vuelva a la configuracion de pantalla original, el primer paso es facil ya lo tengo, pero para la segunda parte yo no voy a saber cual era la configuracion original, hay alguna forma de que automaticamente haga una especie de "deshacer o undo" ?
Muchas Gracias, Diego
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cambiar y restaurar la resolución de pantalla durante una presentación

Publicado por Alejandro (110 intervenciones) el 04/04/2024 19:01:18
Hola Diego.

Si estás buscando una forma de cambiar temporalmente la resolución de la pantalla durante una presentación y luego restaurar automáticamente la configuración original, puedes utilizar las funciones de la API de Windows para lograrlo.

Aquí tienes un ejemplo en lenguaje C# que muestra cómo cambiar la resolución de la pantalla y luego restaurarla a la configuración original:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
csharp
using System;
using System.Runtime.InteropServices;
 
public class ResolucionPantalla
{
    [DllImport("user32.dll")]
    public static extern int ChangeDisplaySettingsEx(string lpszDeviceName, ref DEVMODE lpDevMode, IntPtr hwnd, uint dwflags, IntPtr lParam);
 
    [DllImport("user32.dll")]
    public static extern int EnumDisplaySettings(string lpszDeviceName, int iModeNum, ref DEVMODE lpDevMode);
 
    [StructLayout(LayoutKind.Sequential)]
    public struct DEVMODE
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string dmDeviceName;
        public short dmSpecVersion;
        public short dmDriverVersion;
        public short dmSize;
        public short dmDriverExtra;
        public uint dmFields;
        public int dmPositionX;
        public int dmPositionY;
        public int dmDisplayOrientation;
        public int dmDisplayFixedOutput;
        public short dmColor;
        public short dmDuplex;
        public short dmYResolution;
        public short dmTTOption;
        public short dmCollate;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string dmFormName;
        public short dmLogPixels;
        public uint dmBitsPerPel;
        public uint dmPelsWidth;
        public uint dmPelsHeight;
        public uint dmDisplayFlags;
        public uint dmDisplayFrequency;
        public uint dmICMMethod;
        public uint dmICMIntent;
        public uint dmMediaType;
        public uint dmDitherType;
        public uint dmReserved1;
        public uint dmReserved2;
        public uint dmPanningWidth;
        public uint dmPanningHeight;
    }
 
    public static void CambiarResolucion(int ancho, int alto)
    {
        DEVMODE devMode = new DEVMODE();
        devMode.dmSize = (short)Marshal.SizeOf(devMode);
 
        if (EnumDisplaySettings(null, -1, ref devMode) != 0)
        {
            devMode.dmPelsWidth = (uint)ancho;
            devMode.dmPelsHeight = (uint)alto;
 
            int result = ChangeDisplaySettingsEx(null, ref devMode, IntPtr.Zero, 0x00000004 | 0x00000002, IntPtr.Zero);
 
            if (result != 0)
            {
                Console.WriteLine("No se pudo cambiar la resolución de la pantalla.");
            }
        }
    }
 
    public static void RestaurarResolucionOriginal()
    {
        ChangeDisplaySettingsEx(null, IntPtr.Zero, IntPtr.Zero, 0, IntPtr.Zero);
    }
 
    public static void Main()
    {
        // Cambiar a la resolución deseada
        CambiarResolucion(800, 600);
 
        // Realizar la presentación
 
        // Restaurar la resolución original
        RestaurarResolucionOriginal();
    }
}

Este código utiliza las funciones ChangeDisplaySettingsEx y EnumDisplaySettings de la API de Windows para cambiar la resolución de la pantalla y restaurarla a la configuración original, respectivamente. Puedes adaptar este código a tu lenguaje de programación preferido si no estás utilizando C#.

Recuerda que este código solo cambia la resolución de la pantalla temporalmente durante la ejecución del programa. Una vez que el programa finaliza, la resolución de la pantalla vuelve a la configuración original.

Espero que esto te sea útil para cambiar la resolución de la pantalla durante tu presentación y luego restaurarla automáticamente. ¡Buena suerte con tu presentación!

¡Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar