美文网首页
qt setWindow与setViewport

qt setWindow与setViewport

作者: 王焕钢 | 来源:发表于2022-06-20 00:05 被阅读0次

setWindow(int x, int y, int width, int height):

  逻辑坐标,可理解为截取窗口矩形区域显示到设备上,当画的内容超过窗口本身大小时,拉大窗口,不会显示超过部分

setViewport(int x, int y, int width, int height):

  设备坐标,可理解为目标设备的显示矩形区域,当画的内容超过窗口本身大小时,拉大窗口,会显示超过部分

个人理解:

  最终不管设置哪种模式,看到的都是窗体上显示图形。也就是窗口 与 设备的映射关系。

  setWindow就是窗口范围内容要显示到设备(所有设备范围内)上,所以拉大窗口中,图会变大

  setViewport就是窗口内容(全部窗口范围)要显示到指定设备范围内,所以拉大窗口中,看上去图会小


以下代码,新建窗口大小为400,400

代码1

  QPainter painter(this);

  painter.setBrush(Qt::red);

  painter.fillRect(10, 10, 100, 100, QBrush(QColor(255, 0, 0, 255)));

  注: 在窗口上显一个红色正方体

代码2

QPainter painter(this);

  painter.setWindow(10, 10, 400, 400);

    painter.setBrush(Qt::red);

    painter.fillRect(10, 10, 100, 100, QBrush(QColor(255, 0, 0, 255)));

注: 红色矩形原点和窗口原点看上去都是0,0,拉大窗体,会发现矩形相应的显示变大

代码3:

QPainter painter(this);

 painter.setViewport(-10, -10, 400, 400);

 painter.setBrush(Qt::red);

   painter.fillRect(10, 10, 100, 100, QBrush(QColor(255, 0, 0, 255)));

注:注意viewport x,y是 -10,-10,红色矩形原点和窗口原点看上去都是0,0,拉大窗体,会发现矩形相应的显示变小

相关文章

网友评论

      本文标题:qt setWindow与setViewport

      本文链接:https://www.haomeiwen.com/subject/ctydvrtx.html