如何将像素从一个位图复制到另一个形状像圆圈?

时间:2010-10-28 16:43:19

标签: android bitmap geometry getpixel

我正在使用setPixel和getPixel函数,但他们使用的矩阵是自然的矩形。我正在尝试复制形状像圆圈的像素!

更新: 现在我正在使用这个,但我希望有比这更有效的东西:

for(int i=0;i<eHeight ; i++)
        for(int j=0;j<eWidth ; j++)
            if( Math.pow((i-eHeight/2),2) +  Math.pow((j-eWidth/2),2) < Math.pow((eHeight/2),2)) 
                mutable.setPixel((int)xpos+j, (int)ypos+i, r[i*eWidth + j]) ;

2 个答案:

答案 0 :(得分:2)

如果您的圈子是固定的,我打赌有一种方法可以使用蒙版来快速完成 - 谷歌搜索告诉我,你需要的是PorterDuffXfermode。

否则,您可以通过更有效地进行计算来节省一些时间。首先,不要使用战俘来解决问题。其次,预先计算循环外的半径。理论上你的编译器会为你解决所有这些问题,但不要指望它。

第三,考虑使用Bresenham's circle algorithm查找圆的每一行的开始和结束,然后一次复制一行像素,而不是一次复制一个像素。

答案 1 :(得分:0)

您需要做一些数学运算来确定您要复制的像素是否应该是圆的一部分。

(x - h)^2 + (y - k)^2 = r^2