如何绘制方形渐开线

如何绘制方形渐开线方形渐开线 方形渐开线是指 由一点向外扩散的方形线 博主自己总结的 如果不会欢迎评论 具体思路 先确定一个点坐标 之后自行决定点的起始方向 之后 我们假设这个点的运动规则是 上 右 下

大家好,我是讯享网,很高兴认识大家。

方形渐开线:



讯享网


方形渐开线是指:

由一点向外扩散的方形线(博主自己总结的,如果不会欢迎评论)


具体思路:


先确定一个点坐标,之后自行决定点的起始方向。




之后,我们假设这个点的运动规则是:

上 → 右 → 下 → 左

那么,一次轮回就是四次,一次轮回就是一圈。


我们即可找到规律:

当方向向上的时候,移动一格

当方向向右的时候,移动一格

当方向向下的时候,移动两格

当方向向左的时候,移动两格


根据这样的规律,我们便很容易进行编码


但,如果你不注意的话,很容易结果呈现以下的样子

 

        


然而我们看到的是一片蓝色。


为什么?


相信你通过上文的Excel表可以看到原因


如果让我们把Excel表继续画下去



相信如果我没有标记数字,那么眼前的是似海水般的忧郁蓝


不要忧郁,我们试着找找原因:


很快我们就知道,是不是我们的格子没有间隔


很好,如果有间隔的话,我们的结果会是这样的:


很好,我们很容易就可以发现一个规律:

向上移动1格向右移动2格向下移动3格向左移动4格


根据这样的规律,我们很容易可以编码。效果图就在文顶处


基于Qt框架写的代码如下:


void Widget::paintEvent(QPaintEvent *e)

讯享网
讯享网{ 
  
    
  
 paint=new QPainter;
讯享网 paint->begin(this);
 paint->setPen(QPen(Qt::blue,15)); //设置画笔形式
讯享网 paint->setBrush(QBrush(Qt::red,Qt::SolidPattern)); //设置画刷形式
 //x y 是起始坐标,direct是方向,t每次画线的时候增加的步长
讯享网 int x = this->width() / 2, y = this->height() / 2 , direct = 0 , t = 5;
 //循环500圈
讯享网 for(int i=1;i<=500;i++)
 { 
  
    
  
讯享网 //每四次循环为一圈
 for(int j=0;j<3;j++)
讯享网 { 
  
    
  
 //判断方向
讯享网 switch (direct) { 
  
    
  
 case 0:
讯享网 paint->drawLine(x,y,x,y+t);
 y+=t;
讯享网 break;
 case 1:
讯享网 paint->drawLine(x,y,x+t,y);
 x+= t;
讯享网 break;
 case 2:
讯享网 paint->drawLine(x,y,x,y-t);
 y-=t;
讯享网 break;
 case 3:
讯享网 paint->drawLine(x,y,x-t,y);
 x-=t;
讯享网 break;
 }
讯享网 t += 20; //每一次画线都增加一次步长
 direct = direct >= 3 ? 0 : ++direct; //重置方向
讯享网 }
 }
讯享网 paint->end();
}
讯享网

小讯
上一篇 2025-03-12 13:23
下一篇 2025-01-26 10:28

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/26040.html