首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Qt中,如果提供负值参数,drawPoint方法不会绘制任何内容。

在Qt中,如果提供负值参数,drawPoint方法不会绘制任何内容。
EN

Stack Overflow用户
提问于 2015-01-14 05:12:40
回答 1查看 1.2K关注 0票数 0

在Qt创建者drawPoint()方法中,如果负值参数被传递给Bresenham的algorithm.but代码,则不加点,它不是在qt creator.it中工作,而是在一个象限中绘制圆。

代码语言:javascript
复制
Bresenham::Bresenham(QWidget*parent):QWidget(parent)  
{}

void  Bresenham::paintEvent(QPaintEvent *e)  
{  
     Q_UNUSED(e);  
     QPainter qp(this);  
     drawPixel(&qp);  
}  
void  Bresenham::drawPixel(QPainter *qp)  
{  
    QPen pen(Qt::red,2,Qt::SolidLine);  
    qp->setPen(pen);  
    int x=0,y,d,r=100;  
    y=r;  
    d=3-2*r;  
    do  
    {  
       qp->drawPoint(x,y);  
       qp->drawPoint(y,x);  
       qp->drawPoint(y,-x);  
       qp->drawPoint(x,-y);  
       qp->drawPoint(-x,-y);  
       qp->drawPoint(-y,-x);  
       qp->drawPoint(-x,y);  
       qp->drawPoint(-y,x);
       if(d<0)  
       {  
          d=d+4*x+6;  
       }  
       else  
       {  
          d=d+(4*x-4*y)+10;  
          y=y-1;  
       }  
       x=x+1;  
      }while(x<y); 
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-14 09:17:12

您需要将Qt坐标系转换为经典的笛卡尔坐标系。选择一个新的中心QPoint orig并替换所有

代码语言:javascript
复制
qp->drawPoint(x,y);  

使用

代码语言:javascript
复制
qp->drawPoint(orig + QPoint(x,y));

Qt坐标系起源于(0,0),y轴倒置.例如,从A(2,7)B(6,1)的一个段如下所示:

注意,这里只有正x,正y象限。为了简单起见,假设不存在负坐标.

注:

由于性能原因,最好先计算所有点,然后使用

代码语言:javascript
复制
QPainter::drawPoints ( const QPoint * points, int pointCount );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27936238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档