Sal*_*alx 5 java math optimization android
我有一个函数,它采用无缝位图,并使用世界坐标在任何方向上在屏幕上滚动它.有4个绘图(游戏区域小于完整的位图大小..所以最多,您将看到4个位图副本,只是绘制了不同的部分以保持无缝效果).我想知道的是,我应该对rect界限进行修改,以便它只是将它应该放到屏幕上的部分吗?或者我应该让Android处理吗?如果我自己这样做,我该怎么处理呢?就数学而言,世界的坐标和翻译确实让我很困惑.:/
这是代码.
public void draw(Canvas canvas){
oCoords.x=(int) fX;
oCoords.y=(int) fY;
oTopLeft = gridContainingPoint(oCoords);
oTopRight.x = gridContainingPoint(oCoords).x + iWidth;
oTopRight.y = gridContainingPoint(oCoords).y;
oBottomLeft.x = gridContainingPoint(oCoords).x;
oBottomLeft.y = gridContainingPoint(oCoords).y + iHeight;
oBottomRight.x = gridContainingPoint(oCoords).x + iWidth;
oBottomRight.y = gridContainingPoint(oCoords).y + iHeight;
canvas.save();
canvas.translate(-fX, -fY);
oCloud.setBounds(oTopLeft.x, oTopLeft.y, oTopLeft.x + this.iImageWidth, oTopLeft.y + this.iImageHeight);
oCloud.draw(canvas);
oCloud.setBounds(oTopLeft.x + this.iImageWidth, oTopLeft.y, oTopLeft.x + (this.iImageWidth * 2), oTopLeft.y + this.iImageHeight);
oCloud.draw(canvas);
oCloud.setBounds(oTopLeft.x, oTopLeft.y + this.iImageHeight, oTopLeft.x + this.iImageWidth, oTopLeft.y + (this.iImageHeight * 2));
oCloud.draw(canvas);
oCloud.setBounds(oTopLeft.x + this.iImageWidth, oTopLeft.y + this.iImageHeight, oTopLeft.x + (this.iImageWidth * 2),oTopLeft.y + (this.iImageHeight * 2));
oCloud.draw(canvas);
canvas.restore();
}
Run Code Online (Sandbox Code Playgroud)
我不确定我是否理解您发布的代码块的详细信息,但如果您问 android Clip 是否自动绘制到屏幕边界,答案是肯定的。因此,在绘制位图时不必设置边界,除非您想绘制比屏幕小的部分。