网站建设微信营销,wordpress 删除文章,图片瀑布流网站,做优化需要发多少个网站视口和窗口
绘图设备的物理坐标是基本的坐标系#xff0c;通过QPainter的平移、旋转等变换可以得到更容易操作的逻辑坐标
为了实现更方便的坐标#xff0c;QPainter还提供了视口(Viewport)和窗口(Window)坐标系#xff0c;通过QPainter内部的坐标变换矩阵自动转换为绘图设…视口和窗口
绘图设备的物理坐标是基本的坐标系通过QPainter的平移、旋转等变换可以得到更容易操作的逻辑坐标
为了实现更方便的坐标QPainter还提供了视口(Viewport)和窗口(Window)坐标系通过QPainter内部的坐标变换矩阵自动转换为绘图设备的物理坐标
视口表示绘图设备的任意一个矩形区域的物理坐标可以只选取物理坐标的一个矩形区域用于绘图。默认情况下视口等于绘图设备的整个矩形区
窗口与视口是同一个矩形只不过是用逻辑坐标定义的坐标系。窗口可以直接定义矩形区的逻辑坐标范围
不添加视口与窗口
#include widget.h
#include ui_widget.hWidget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui-setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::paintEvent(QPaintEvent* event){QPainter painter(this);int width this-width();int height this-height();QRect rect(width/4,height/4,width/2,height/2);// painter.setViewport(width/2,height/2,width/2,height/2);// painter.setWindow(width/2,height/2,width,height);QPen pen;pen.setWidth(3);pen.setColor(Qt::blue);pen.setStyle(Qt::SolidLine);pen.setCapStyle(Qt::FlatCap);pen.setJoinStyle(Qt::BevelJoin);painter.setPen(pen);QBrush brush;brush.setColor(Qt::green);brush.setStyle(Qt::SolidPattern);painter.setBrush(brush);painter.drawRect(rect);
}添加视口 选择右下角四分之一区域作为视口
painter.setViewport(width/2,height/2,width/2,height/2);添加窗口 painter.setWindow(-width/2,-height/2,width,height);更改窗口大小
painter.setWindow(-width/2,-height/2,width/2,height/2);这里思考一下窗口的起点坐标和窗口的大小自然明白此处为什么不显示矩形 视口与窗口实际上是同一区域视口使用的是物理坐标窗口使用的是逻辑坐标
使用窗口坐标的优点是只需按照窗口坐标定义来绘图而不用管实际的物理坐标范围的大小。例如在一个固定边长为100的正方形窗口内绘图当实际绘图设备大小变化时绘制的图形会自动变化大小。这样就可以将绘图功能与绘图设备隔离开来使得绘图功能适用于不同大小、不同类型的设备