Android(小画板) Canvas中绘制基本图形时的小结

在使用Android的Canvas绘制矩形或椭圆时,如果坐标值包含负数或不符合规则,可能会导致绘制失败。本文总结了遇到的问题及解决办法,包括通过判断条件调整绘制方向以确保正确显示,同时提供了避免此类问题的规则——起始点需与坐标(0, 0)一致,终点位于其对角线上。" 88312660,7759015,Linux系统编程实践:解析who命令,"['Linux', '系统编程', 'shell命令', '文件操作']
摘要由CSDN通过智能技术生成

在绘制矩形时我们一般都会这样写:

startX 起始X坐标

stopX 结束X坐标

startY起始Y坐标

stopY 结束Y坐标

然后直接调用canvas.drawRect(startX, startY, stopX, stopY, paint);进行绘制一般情况下绘制时没有问题的。因此不会发现存在的一个问题,即当所给的终点坐标有值为负数时将绘制不出矩形了。同理椭圆 绘制时也会存在这个问题,因为你看椭圆绘制canvas.drawOval(new RectF(startX, startY, stopX, stopY), paint);就可以知道了。

对于矩形我们改进的方法有两个,如果找不到原因的话,可以直接将矩形拆分为画线的方式来绘制。画四条线, 但是椭圆就难了,我暂时没找到方法。

上面的只是权宜之计,我们忘了一个规则才导致出现上面的这个情况。

既是在绘制矩形时必须这样规定起始点和终点,起始点与你坐标定义的(0,0)位置保持一致,终点在其的对角线上。比如你定义的其实点在左上角,那么你绘制图形时必须保证你的绘制起点在左上角。

下边是改进后的代码,

 if(startX > stopX && startY > stopY){ // 往左上
canvas.drawRect(new RectF(stopX, stopY, startX, startY), paint);
}else if(startX < stopX && startY > stopY){// 往右上
canvas.drawRect(new RectF(startX, stopY, stopX, startY), paint);
}else if(startX > stopX && startY < stopY){// 往左下
canvas.drawRect(new RectF(stopX, startY, startX, stopY), paint);
}else if(startX < stopX && startY < stopY){// 往右下
canvas.drawRect(new RectF(startX, startY, stopX, stopY), paint);
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值