Qt基础图形绘制2

世界坐标:也叫逻辑坐标,使用的单位叫做逻辑单位,是人类世界中的坐标,如北京在地图中的坐标为(700km,899km)。这种坐标系统可大可小,大可至几万千米,小至几毫米,随你设置,该系统中坐标大小与显示设备大小无关。一般来说,逻辑坐标系在左下角,正X轴向又,正Y轴向上。

窗口坐标:窗口坐标和世界坐标其实没有太大区别,都使用逻辑坐标进行表示。只是世界坐标和窗口坐标之间可能会存在一些变换,如平移、缩放、旋转、扭曲。

设备坐标:也叫物理坐标,原点在左上角,正X轴向右,正Y轴向下,显示器中,坐标单位通常为像素,打印机中,坐标单位通常为点。其X、Y的负半轴为虚设,超出设备的部分无法显示或无法打印图形。设备坐标系和设备大小密切相关的,超出设备大小之外的图形是不予显示或打印的。

 例子:

 代码实现: 

void Widget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPen pen;
    
    pen.setColor(Qt::red);
    pen.setWidthF(0.5);
    pen.setStyle(Qt::DashDotLine);
    
    painter.setPen(pen);
    painter.setViewport(0, 0, width(), height());
    painter.setWindow(-100, 100, 200, -200);//(-100, 100), (100, -100)
    
    painter.drawLine(QPoint(0, 0), QPoint(100, 100));
}

实现一个正弦波形:

 源码:

Widget::Widget(QWidget *parent) : QWidget(parent)
{
    setWindowTitle(QString::fromLocal8Bit(" D.T.Software"));
    
    for(float x=-10; x<10; x+=0.01)
    {
        float y = qSin(x);
        m_list.append(QPointF(x, y));
    }
    
    qDebug() << m_list.size();
}

void Widget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPen pen;
    
    pen.setColor(Qt::blue);
    pen.setWidthF(0.05);
    pen.setStyle(Qt::SolidLine);
    
    painter.setPen(pen);
    
    painter.fillRect(QRect(60, 60, width()-120, height()-120), Qt::black);
    painter.setViewport(60, 60, width()-120, height()-120);
    painter.setWindow(-10, 2, 20, -4);//(-10, 2), (10, -2)
    
    painter.drawLine(QPoint(-10, 0), QPoint(10, 0));
    painter.drawLine(QPoint(0, 2), QPoint(0, -2));
    
    QList<QPointF>::iterator it = m_list.begin();
    
    while (it != m_list.end())
    {
        qDebug() << *it;
        painter.drawPoint(*it);
        ++it;
    }
}

源码链接:https://download.csdn.net/download/weixin_41937297/36870039

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值