打印

这行代码有个BUG,谁能找出来?

[复制链接]
2673|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
农民讲习所|  楼主 | 2008-10-21 09:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pLine = 0x31f40000;
pLine += (mWindowWidth - sFontMsg.mWidth)/2 + ( mWindowHeight - sFontMsg.mHeight ) * mWindowWidth / 2;

mWindowWidth:  LCD的屏幕象素宽度,=800;
mWindowHeight: LCD的屏幕象素高度度,=600;
sFontMsg.mHeight: 要显示的字符的高度
sFontMsg.mHeight: 要显示的字符的宽度

上面代码作用是:确定要显示的字符,位于屏幕中间。
(mWindowWidth - sFontMsg.mWidth)/2,计算X偏移。
( mWindowHeight - sFontMsg.mHeight ) * mWindowWidth / 2,计算Y偏移再乘上屏幕宽度800。

现象:有些显示,X会偏右。有些显示是正确的。

相关帖子

沙发
aweyfan| | 2008-10-21 10:08 | 只看该作者

就是舍入误差吧

使用特权

评论回复
板凳
古道热肠| | 2008-10-21 10:25 | 只看该作者

最好显示约定

 (( mWindowHeight - sFontMsg.mHeight ) * mWindowWidthL) / 2;可能会更好些,加个括号,同时将mWindowWidth变换成long类型.

使用特权

评论回复
地板
农民讲习所|  楼主 | 2008-10-21 10:37 | 只看该作者

变量都是INT32,==long

使用特权

评论回复
5
simon21ic| | 2008-10-21 11:10 | 只看该作者

猜猜看

(mWindowHeight - sFontMsg.mHeight) * mWindowWidth / 2
--》
((mWindowHeight - sFontMsg.mHeight) / 2) * mWindowWidth

使用特权

评论回复
6
| | 2008-10-21 11:14 | 只看该作者

是不是整除2,引起的...

使用特权

评论回复
7
simon21ic| | 2008-10-21 11:16 | 只看该作者

要是猜对的话

这个错误就很明显了
出错时会向→多移半屏

使用特权

评论回复
8
| | 2008-10-21 11:17 | 只看该作者

字节对齐 引起的?瞎猜一下..

(mWindowWidth - sFontMsg.mWidth)/2,计算X偏移。//就这儿有问题????


现象:有些显示,X会偏右。有些显示是正确的。

使用特权

评论回复
9
simon21ic| | 2008-10-21 11:20 | 只看该作者

mWindowHeight - sFontMsg.mHeight 是偶数时正常
是奇数时会有偏移。当然,前提没有其他问题。

使用特权

评论回复
10
农民讲习所|  楼主 | 2008-10-21 11:37 | 只看该作者

simon21ic对了

写算式的时候,不小心就出错。

使用特权

评论回复
11
lhj200304| | 2009-11-28 10:28 | 只看该作者
奇数除2会出问题的

使用特权

评论回复
12
linzhiqi1| | 2014-3-23 19:32 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

1275

帖子

15

粉丝