标题:[讨论]contains()的效率问题
取消只看楼主
zcx8532
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-11-9
 问题点数:0 回复次数:3 
[讨论]contains()的效率问题
GeneralPath类里面的contains()方法是不是效率很低?我感觉用了contains()方法以后程序执行起来明显慢了很多。
搜索更多相关主题的帖子: contains 效率 GeneralPath 
2007-02-01 09:39
zcx8532
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-11-9
得分:0 
我是要判断一个点是否位于一个做了旋转操作以后的矩形里面,我是这样做的:先把矩形转换成GeneralPath,然后对GeneralPath进行旋转操作,再调用GeneralPath里面的contains()方法来判断。在这种情况下如何调用Shape里面的contains()方法?Shape里面的contains()方法要比GeneralPath里面的contains()方法快吗?

2007-02-01 10:21
zcx8532
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-11-9
得分:0 
public boolean contains(int x, int y){
//(x,y) is in the outer panel's coordinates system
Rectangle2D.Double rectIPS = new Rectangle2D.Double(
topLeftX,topLeftY,imageWidth,imageHeight);
GeneralPath rectPath = new GeneralPath(rectIPS);
rectPath.transform(AffineTransform.getRotateInstance(
angle, (getCenter().x + topLeftX), (getCenter().y + topLeftY)));


return rectPath.contains(x, y);
}
是这样的,如果我把红色部分注释掉,直接调用rectIPS.contain(),速度很快,但是加上红色部分以后速度就变慢了,几乎慢了有2秒钟,我想应该就是GeneralPath里面的contains()方法比较慢吧。但是矩形旋转以后还是矩形,慢也不会慢这么多啊

2007-02-01 10:48
zcx8532
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-11-9
得分:0 
嗯,那也有可能

2007-02-01 11:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-119105-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.096335 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved