【发布时间】:2011-08-26 13:02:26
【问题描述】:
我有一个位图,它通过 onTouchEvent() 方法设置两个变量 centerX、centerY。从这些 x,y 坐标中,我在位图上画了一个圆圈,并且可以通过滑动条将圆圈的像素更改为不同的 rgb 值。我用算法来定位圆的内部像素,但不幸的是,就目前而言,我必须逐个像素地搜索整个位图以定位圆的像素。这有一个巨大的方法调用开销,我想减少它。
我想做的是在圆圈周围创建一个边界框,这样我的算法可以搜索的空间更少,因此有望加快速度。如何使用圆的 x,y 中心坐标和 50 的半径在圆周围创建一个矩形?
谢谢马特。
public void findCirclePixels(){
for (int i=0; i < bgr.getWidth(); ++i) {
for (int y=0; y < bgr.getHeight(); ++y) {
if( Math.sqrt( Math.pow(i - centreX, 2) + ( Math.pow(y - centreY, 2) ) ) <= radius ){
bgr.setPixel(i,y,Color.rgb(Progress+50,Progress,Progress+100));
}
}
}
}// end of changePixel()
【问题讨论】:
-
我想,画一个新的圆圈会便宜得多。您应该考虑引入一个 framestep 或者只是清除并重新创建屏幕内容
-
@kostja 你好,我不确定你是否理解我的要求,如果你理解了,对不起:)。我只是将圆圈的像素设置为不同的颜色,以确保滑块和像素算法标记正确的像素。该应用程序最终会在圆圈上应用鱼眼效果。(基本上会扭曲圆圈的像素)。我可以在位图中找到圆圈像素的唯一方法是从左到右,自上而下,逐个像素地搜索整个位图。我只想在圆圈周围搜索一个矩形,所以电话更少。
-
我以为我理解了您的要求,但我不再那么确定了,尤其是为什么 :) 如果我的第一条评论不符合您的问题,请忽略它。
标签: android bitmap geometry bounding-box