我正在android中构建一个绘图应用程序,我在绘制矩形时发现了一个问题 . 应根据语法绘制矩形
new Rect(left, top, right, bottom)
现在我的逻辑工作是通过起点 (startX, startY) 和终点 (endX, endY) 并使用以下方式绘制:
new Rect(startX,startY, endX, endY);
假设用户从左上角到右下角绘图 .
The Problem
现在,当用户尝试从右到左或从下到上绘制矩形时,会出现问题 . 处理第一个问题(从右到左):这意味着startX现在指向右边(而不是左边) . 因此代码现在将尝试使用此语法绘制:
new Rect(right, top, left, bottom)
哪个将无法绘制矩形 . 换句话说,startX大于endX,绘制矩形时不应该这样 .
Resolution
所以我在绘制矩形之前使用以下代码进行检查:
int smallX,largeX,smallY,largeY;
if(startX>endX){ smallX=endX; largeX=startX; }else{ smallX=startX; largeX=endX; }
if(startY>endY){ smallY=endY; largeY=startY; }else{ smallY=startY; largeY=endY; }
rect = new Rect(smallX, smallY,largeX,largeY);
这将确保第一个参数始终指向左侧,其他参数也很好 .
我的问题在这里......还有另一种解决方法吗?
1 回答
我不这么认为,因为Canvas是通过坐标设置的,坐标(0,0)是左上角并且增长到右下角,渲染器遵循该逻辑,从左下角开始向左上行 .