屏幕分辨率导致的问题

IaoapBicfisH 2006-04-17 08:41:06
在1400*1280分辨率下,做好的图形界面,为什么到了1024*768下面,整个界面就乱了??怎么解决这个问题呢??
...全文
190 10 点赞 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
si812cn 2006-04-18
在界面里设置变量保存打开你程序之前的设置,
Screen Srn=Screen.PrimaryScreen;
tempHeight=Srn.Bounds.Width;
tempWidth=Srn.Bounds.Height;
  • 打赏
  • 举报
回复
si812cn 2006-04-18
具体的代码

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
}
}
}

}
}
}
}
  • 打赏
  • 举报
回复
si812cn 2006-04-18
还有一种方法是用你的程序时,把它的电脑的分辨率换成你的程序要使用的分辨率,关掉你的程序时再设置回去。
  • 打赏
  • 举报
回复
realwolf 2006-04-18
如果WinForm设置AutoScale=false,就不会因为分辨率不同而变化了。
  • 打赏
  • 举报
回复
我是丁学 2006-04-17
一个办法是使用表格或div固定宽度,不过这样的话,到低分辨率下会有滚动条出现
另一个办法就是全部使用比例控制宽度,不过这样还可能会乱,而且可能会比较难看
现在做网站,最好向1024*768看齐
  • 打赏
  • 举报
回复
wxdl1981 2006-04-17
先说明你用的是WinForm还是Asp.net吧

对于Asp.net, 可以用表格做页面的框架
对于WinForm, 可以指定窗体的最小Size(MinimumSize)以及窗体内所有控件的Dock和Anchor属性
  • 打赏
  • 举报
回复
mib23 2006-04-17
使用比例控制吧
  • 打赏
  • 举报
回复
comefeel 2006-04-17
OK, you can using the precent to control.
  • 打赏
  • 举报
回复
IaoapBicfisH 2006-04-17
我是按照像素来的!
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2006-04-17 08:41
社区公告

让您成为最强悍的C#开发者