游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10106|回复: 29

使程序自动适应所有屏幕分辨率.

[复制链接]

88

主题

1125

帖子

1136

积分

金牌会员

Rank: 6Rank: 6

积分
1136
QQ
发表于 2007-1-5 11:57:00 | 显示全部楼层 |阅读模式
比如 ,我们在一个高屏幕分辨率的环境下编了一个软件 .
   但是使用者可能他的机器不支持这么高的分辨率, 那么在低于开发环境下的分辨率,
画面就会出现不和谐和部分图像消失的现象 . 怎样纠正这个现象呢
   我们可以写一个屏幕调试程序 .
   前面 ,我上网搜索了不少资料 , 有许多做法是干脆强制软件运行时更改屏幕分辨率,然后在关闭时返回分辨率 . 这种做法一是复杂, 要使用大量的API , 二是不稳定 .有的机器弄不好会重启.

   这样 ,我们可以根据座标转换的原理 ,来做好屏幕分辨率的调整.
   如下, 写下这个public 过程 这个可以加到你的模块或者类.
   
Public Sub SetLogin(FrmA As Form)
  On Error Resume Next(有时候会出现错误,使用这句可避免,此外效果仍然能执行)
  Dim a As Control
  Dim Wx As Long, Wy As Long
  Dim Dx As Double, Dy As Double
    Wx = Screen.Width / Screen.TwipsPerPixelX(得到实际屏幕宽)
    Wy = Screen.Height / Screen.TwipsPerPixelY(得到实际屏幕高)
    Dx = Wx / 1440: Dy = Wy / 900
    FrmA.Move FrmA.Left * Dx, FrmA.TOP * Dy, FrmA.Width * Dx, FrmA.Height * Dy
    For Each a In FrmA.Controls
      a.Move a.Left * Dx, a.TOP * Dy, a.Width * Dx, a.Height * Dy
    Next
End Sub

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2007-1-5 17:40:00 | 显示全部楼层

Re:使程序自动适应所有屏幕分辨率.

有道理,但是我更喜欢让用户选择合适的分辨率并改变分辨率。
那个On Error Resume Next可能会跳过什么错误??

12

主题

525

帖子

525

积分

高级会员

Rank: 4

积分
525
发表于 2007-1-8 05:17:00 | 显示全部楼层

Re:使程序自动适应所有屏幕分辨率.

跳过所有错误。

12

主题

525

帖子

525

积分

高级会员

Rank: 4

积分
525
发表于 2007-1-8 05:17:00 | 显示全部楼层

Re:使程序自动适应所有屏幕分辨率.

最好少使用,会有很多麻烦。

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2007-1-8 15:04:00 | 显示全部楼层

Re:使程序自动适应所有屏幕分辨率.

我知道是跳过所有错误,但是我说的是这段代码可能会产生什么错误来跳过。
有时候这东西该用时还要用,总不能发布了还让某个隐性的Bug让用户来调试吧??

12

主题

525

帖子

525

积分

高级会员

Rank: 4

积分
525
发表于 2007-1-10 22:17:00 | 显示全部楼层

Re: Re:使程序自动适应所有屏幕分辨率.

Miu.C: Re:使程序自动适应所有屏幕分辨率.

我知道是跳过所有错误,但是我说的是这段代码可能会产生什么错误来跳过。

这个是跳过能中止程序的错误,换句话说,防止程序因错误而被强制关闭的。计算错误不包括在内。
这东西是在你测试全部完成以后,发布软件的时候再加上去。主要是防止因为某些情况而导致的中途中断程序的情况,有很多副作用,最好用 goto 来转。

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2007-1-12 01:31:00 | 显示全部楼层

Re:使程序自动适应所有屏幕分辨率.

看来还没弄明白……

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2007-1-12 12:40:00 | 显示全部楼层

Re: Re: Re:使程序自动适应所有屏幕分辨率.

jyc8778: Re: Re:使程序自动适应所有屏幕分辨率.


这个是跳过能中止程序的错误,换句话说,防止程序因错误而被强制关闭的。计算错误不包括在内。
这东西是...

没明白我的意思啊。
..........

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2007-1-12 12:42:00 | 显示全部楼层

Re: Re: Re:使程序自动适应所有屏幕分辨率.

jyc8778: Re: Re:使程序自动适应所有屏幕分辨率.


这个是跳过能中止程序的错误,换句话说,防止程序因错误而被强制关闭的。计算错误不包括在内。
这东西是...

我不是说这个语句有什么作用,这个语句有什么坏处。我是说上面那一大段代码可能会产生什么错误!!!
................
[em6] [em6] [em6]

12

主题

525

帖子

525

积分

高级会员

Rank: 4

积分
525
发表于 2007-1-12 18:01:00 | 显示全部楼层

Re: Re: Re: Re:使程序自动适应所有屏幕分辨率.

Miu.C: Re: Re: Re:使程序自动适应所有屏幕分辨率.


我不是说这个语句有什么作用,这个语句有什么坏处。我是说上面那一大段代码可能会产生什么错误!!!
................
[em6] [em6] [em6]

哪段代码?楼主的那段吗?不会产生错误,因为都被跳过了。
如果你想预期地知道所有产生的错误的话,你应该修正以下你的设计思想-------你的程序应该能适应大部分常用错误,此外所产生的错误就需要用户来更正。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 06:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表