Linux c画圆角矩形和填充圆角矩形的问题

J__ack 2017-09-06 11:17:55
各位大神好,帮忙看看如下问题,先谢谢了!
如题,画圆角矩形时采用cos和sin函数和半径r来计算出圆角坐标,然后画点,画其它直线,组成圆角矩形,并没有问题。
填充圆角矩形时采用:外层朝里层先画r个圆角矩形,然后矩形填充起来,但画r个圆角矩形的过程有点问题,有漏点,如下图:
代码如下:
int draw_roundrect(int x1,int y1,int x2,int y2,int r,unsigned int color)
{
draw_line_(x1+r,y1,x2-x1-r*2,color);
draw_line_(x1+r,y2,x2-x1-r*2,color);

draw_linel(x1,y1+r,y2-y1-r*2,color);
draw_linel(x2,y1+r,y2-y1-r*2,color);

draw_arc(x1+r,y1+r,r,90,180,color);
draw_arc(x2-r,y1+r,r,0,90,color);
draw_arc(x1+r,y2-r,r,180,270,color);
draw_arc(x2-r,y2-r,r,270,360,color);

return 0;
}
int fill_roundrect(int x1,int y1,int x2,int y2,int r,unsigned int color)
{
int i;

for(i=1;i<=r;i++){
draw_roundrect(x1+i,y1+i,x2-i,y2-i,r,color);
}

fill_rect(x1+r,y1+r,x2-r,y2-r,color);
return 0;
}

...全文
597 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
www_adintr_com 2017-09-07
  • 打赏
  • 举报
回复
应该是浮点数的误差造成的吧
赵4老师 2017-09-06
  • 打赏
  • 举报
回复
偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译,直到定位到具体出错的位置。” 的方法解决的。
呔妖怪来嘛 2017-09-06
  • 打赏
  • 举报
回复
如果代码没有问题 ,换一个电脑试试,之前画斜线的时候就遇到过,线不平滑,填充倒是没有遇到过; 而且有可能是你的填充空间不完全闭合,也可能有这种问题
J__ack 2017-09-06
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译,直到定位到具体出错的位置。” 的方法解决的。
填充时有漏点的问题,是什么原因导致的呢?

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧