在1400*1280分辨率下,做好的图形界面,为什么到了1024*768下面,整个界面就乱了??怎么解决这个问题呢??

解决方案 »

  1.   

    一个办法是使用表格或div固定宽度,不过这样的话,到低分辨率下会有滚动条出现
    另一个办法就是全部使用比例控制宽度,不过这样还可能会乱,而且可能会比较难看
    现在做网站,最好向1024*768看齐
      

  2.   

    OK, you can using the precent to control.
      

  3.   

    先说明你用的是WinForm还是Asp.net吧对于Asp.net, 可以用表格做页面的框架
    对于WinForm, 可以指定窗体的最小Size(MinimumSize)以及窗体内所有控件的Dock和Anchor属性
      

  4.   

    如果WinForm设置AutoScale=false,就不会因为分辨率不同而变化了。
      

  5.   

    具体的代码using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;[StructLayout(LayoutKind.Sequential)]
    public struct DEVMODE1 
    {
    [MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)] public string dmDeviceName;
    public short  dmSpecVersion;
    public short  dmDriverVersion;
    public short  dmSize;
    public short  dmDriverExtra;
    public int    dmFields; public short dmOrientation;
    public short dmPaperSize;
    public short dmPaperLength;
    public short dmPaperWidth; public short dmScale;
    public short dmCopies;
    public short dmDefaultSource;
    public short dmPrintQuality;
    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 short dmBitsPerPel;
    public int   dmPelsWidth;
    public int   dmPelsHeight; public int   dmDisplayFlags;
    public int   dmDisplayFrequency; public int   dmICMMethod;
    public int   dmICMIntent;
    public int   dmMediaType;
    public int   dmDitherType;
    public int   dmReserved1;
    public int   dmReserved2; public int   dmPanningWidth;
    public int   dmPanningHeight;
    };class User_32
    {
    [DllImport("user32.dll")]
    public static extern int EnumDisplaySettings (string deviceName, int modeNum, ref DEVMODE1 devMode );         
    [DllImport("user32.dll")]
    public static extern int ChangeDisplaySettings(ref DEVMODE1 devMode, int flags); public const int ENUM_CURRENT_SETTINGS = -1;
    public const int CDS_UPDATEREGISTRY = 0x01;
    public const int CDS_TEST = 0x02;
    public const int DISP_CHANGE_SUCCESSFUL = 0;
    public const int DISP_CHANGE_RESTART = 1;
    public const int DISP_CHANGE_FAILED = -1;
    }
    namespace Resolution
    {
    class CResolution
    {
    public CResolution(int a,int b)
    {
    Screen screen = Screen.PrimaryScreen;


    int iWidth =a;
    int iHeight =b;
    DEVMODE1 dm = new DEVMODE1();
    dm.dmDeviceName = new String (new char[32]);
    dm.dmFormName = new String (new char[32]);
    dm.dmSize = (short)Marshal.SizeOf (dm); if (0 != User_32.EnumDisplaySettings (null, User_32.ENUM_CURRENT_SETTINGS, ref dm))
    {

    dm.dmPelsWidth = iWidth;
    dm.dmPelsHeight = iHeight; int iRet = User_32.ChangeDisplaySettings (ref dm, User_32.CDS_TEST); if (iRet == User_32.DISP_CHANGE_FAILED)
    {
    MessageBox.Show("Unable to process your request");
    MessageBox.Show("Description: Unable To Process Your Request. Sorry For This Inconvenience.","Information",MessageBoxButtons.OK,MessageBoxIcon.Information);
    }
    else
    {
    iRet = User_32.ChangeDisplaySettings (ref dm, User_32.CDS_UPDATEREGISTRY); switch (iRet) 
    {
    case User_32.DISP_CHANGE_SUCCESSFUL:
    {
    break; //successfull change
    }
    case User_32.DISP_CHANGE_RESTART:
    {

    MessageBox.Show("Description: You Need To Reboot For The Change To Happen.\n If You Feel Any Problem After Rebooting Your Machine\nThen Try To Change Resolution In Safe Mode.","Information",MessageBoxButtons.OK,MessageBoxIcon.Information);
    break;
    //windows 9x series you have to restart
    }
    default:
    {

    MessageBox.Show("Description: Failed To Change The Resolution.","Information",MessageBoxButtons.OK,MessageBoxIcon.Information);
    break;
    //failed to change
    }
    }
    }

    }
    }
    }
    }
      

  6.   

    在界面里设置变量保存打开你程序之前的设置,
    Screen Srn=Screen.PrimaryScreen;
    tempHeight=Srn.Bounds.Width;
    tempWidth=Srn.Bounds.Height;