当前位置: 首页 > news >正文

SWT GC的drawLine方法的一个隐藏Bug

今天在用GC drawLine的时候发现一个奇怪现象。我是在一个Canvas里drawLine的,这个Canvas有滚动条,我只是在滚动条滚动时,计算Canvas里面绘制的偏移坐标,然后将所有的绘制操作加上这个坐标。我在Canvas里面drawImage, draw rect, draw line。当水平卷动时,我发现水平的line都错了,长度和位置都不对,而且随着卷动位置还会变化,有的水平线甚至消失了。而竖直卷动时一切正常。image和rectangle也都正常。而且我把line style换成dotted后,水平线也是正常的。太奇怪了啊,于是google一下SWT Canvas的bug,结果一无所获。我几乎放弃了。不过还是不死心,于是将drawLine的参数print出来,发现出错的时候,x1 <0 !!
答案出来了,原来GC在drawLine(线型为SOLID)时,没有检查点的坐标,所以当x为负时,在内存里线的起始x坐标跑到了上面去了(内存是线性的地址啊)。我立刻在drawLine的地方,限制了一下x1的坐标。Run, 果然一切正确!
虽然耽误了小半天时间,但毕竟找出了问题,也许我应该向Eclipse组织报告一下这个bug ? 我用的SWT版本是3.1.2,不知道新版是否已经解决了。
ps一点体会:往往最绝望的时候能发生转机,在放弃之前再坚持一下往往就能解决问题~

相关文章:

  • 多维数组与矩阵之子数组的最大累加和
  • 游戏也是软件,J2ME游戏程序员不能忘本
  • 多维数组与矩阵之子矩阵的最大累加和
  • 本周技术关注:Oracle10G、MSSQL2005、MYSQL5: CLuster、Replication、Snapshot
  • 设计模式之解释器模式详解(Interpreter Pattern)
  • 书评--信息经营法则
  • Java最大公约数与最小公倍数
  • 关于SWT drawLine bug的进一步验证
  • 矩阵乘法
  • IT出版人的Blog世界
  • 关于Java数组,你该了解这些
  • 世界上最难攀登的山其实是自己!
  • 判断一个整数是否为素数
  • Java保留2位小数的方法总结
  • 开发基于Web Service的图片验证码服务
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • AWS实战 - 利用IAM对S3做访问控制
  • JS数组方法汇总
  • Mysql数据库的条件查询语句
  • nginx 负载服务器优化
  • npx命令介绍
  • TCP拥塞控制
  • tensorflow学习笔记3——MNIST应用篇
  • VUE es6技巧写法(持续更新中~~~)
  • vue-router 实现分析
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 分布式事物理论与实践
  • 复杂数据处理
  • 经典排序算法及其 Java 实现
  • 区块链共识机制优缺点对比都是什么
  • 深入浏览器事件循环的本质
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 思维导图—你不知道的JavaScript中卷
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​configparser --- 配置文件解析器​
  • ​ssh免密码登录设置及问题总结
  • ​如何在iOS手机上查看应用日志
  • # 计算机视觉入门
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #Z2294. 打印树的直径
  • #在 README.md 中生成项目目录结构
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • $.ajax,axios,fetch三种ajax请求的区别
  • (3)STL算法之搜索
  • (6)设计一个TimeMap
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (转)EXC_BREAKPOINT僵尸错误
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .net 中viewstate的原理和使用
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • @Controller和@RestController的区别?
  • @Transaction注解失效的几种场景(附有示例代码)
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname