Canvas中关于滚动条的制作

huangjujiiu 2009-08-30 03:15:11
我现在在试着做一个类似QQ的界面,“我的好友”按钮我画出来了,按下OK也可以显示出我想要的字符,可现在我想做一个滚动条,滚动条只占整个屏幕的一部分,但做出来的滚动条不太合理,一当我想输出的字符变化时,滚动条中变化的那一段到不了最底下又或者超出最底下的范围。我上网搜,但是把不到合适的资料,现在正郁闷着....
希望各位兄弟能给小弟一些建议,谢谢!
...全文
658 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq65112 2009-12-21
  • 打赏
  • 举报
回复
楼上的哥们,第二个算法我试了,不过offset有点大,滚动条都移动到下面去了
淡定别怂 2009-09-09
  • 打赏
  • 举报
回复
我曾经也为这个东西苦恼过,不过现在看来还是很简单的,就两个比例嘛:
第一个,定义滚动条的高度h,已知滚动区域高度H,需要显示的东西的高度SH,和一次可显示的高度sh,那么
h/H = sh/SH;
第二个,与第一个类似,定义当前显示的物体的偏移(offset),已知当前滚动条的y,那么
y/H = offset/SH
huangjujiiu 2009-09-07
  • 打赏
  • 举报
回复
我按照亚日的方法去想,想出来的式子都不太适合,可能自己太菜了,请问哪位高手有没有代码参考一下吗?谢谢
kf156 2009-09-01
  • 打赏
  • 举报
回复
if(滑块Y+滑块高>滚动条Y+滚动条高)//可以加行修正代码
滑块Y=滚动条Y+滚动条高-滑块高;
huangjujiiu 2009-09-01
  • 打赏
  • 举报
回复
谢谢楼上兄弟!
真的没办法处理它不会超出了吗?
LOVE小葡萄 2009-08-31
  • 打赏
  • 举报
回复
边界的值你可以强制画到底部.毕竟是均分,会有你说的那种超出的情况的
huangjujiiu 2009-08-31
  • 打赏
  • 举报
回复
this.scrollHeight = 13 *(this.screenHeight) * (this.screenHeight)/(20*numHeight); this.scrollY =13 * (-this.regionY)*(this.screenHeight)/(20*numHeight);
scrollHeight 滚动条的长度
scrollY 滚动条现在的位置Y坐标
numHeight 显示的高度到了哪个位置
我现在用的是这个,不过还是不太合理,有时滚动条会超出scrollHeight范围
clarkefang 2009-08-30
  • 打赏
  • 举报
回复
你可以这样做,把要绘制的内容做索引,前提是没一行的东西的所占的行距是一样的。根据每一个元素的索引去绘制。按键控制屏幕坐标的移动。在canvas的边上绘制一个滚动条,根据实际的绘制元素所在的比例,调整滚动条的状态。
  • 打赏
  • 举报
回复
有一个timer 类用定时器
然后用drawString在屏幕上绘制
在timer 对象中有个run函数可以 ,改变drawString的参数;就可以绘制滚动条了 。
例如:
private Timer tm3=null;
if(tm3==null)
{
tm3=new Timer();
tm3start();
}
public void tm3start()
{
tm3.schedule(new TimerTask(){
public void run()
{
if(i>500)
{
i=0;
}
else
{
i+=2;
}
}
}, 0, 50);
}
public void drawMark(Graphics g)

{
g.setColor(255,0,0);
g.drawString("滚动字幕 ", 240-MarkCount, 3, Graphics.LEFT|Graphics.TOP);
}
public void paint(){
drawMark(g);
}
huangjujiiu 2009-08-30
  • 打赏
  • 举报
回复
希望能得到参考代码或者思路,谢谢!
jiushao10@163.com

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧