星星蛋挞 2023-02-14 12:03 采纳率: 100%
浏览 25
已结题

关于#qt#的问题:用 qt6写了一个截图工具如下代码实现矩形截图,但为什么截出来的图片都放大了

用 qt6写了一个截图工具
如下代码实现矩形截图,但为什么截出来的图片都放大了

mainWindow.cpp中


```c++
 //先获取全屏截屏
    m_rect* m=new m_rect();
    QScreen *screen=QGuiApplication::primaryScreen();
    m->fullScreen=screen->grabWindow();


m_rect.cpp中

```c++
void m_rect::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPen pen;
    pen.setColor(Qt::blue);
    pen.setWidth(2);
    painter.setPen(pen);

    int lx = begPos.x()<endPos.x()?begPos.x():endPos.x();//矩形截图区域左上角x坐标
    int ly = begPos.y()<endPos.y()?begPos.y():endPos.y();//矩形截图区域右上角x坐标
    int w = begPos.x()<endPos.x()?endPos.x()-begPos.x():begPos.x()-endPos.x();//矩形截图区域宽度
    int h = begPos.y()<endPos.y()?endPos.y()-begPos.y():begPos.y()-endPos.y();//矩形截图区域高度

    QRect rect=QRect(lx,ly,w,h);
    painter.drawPixmap(rect,fullScreen,rect);
    painter.drawRect(lx,ly,w,h);
}

截出来就是这样,所有图标都被放大了,并且最小化的窗口也显示出来,这是为什么呢

img

  • 写回答

2条回答 默认 最新

  • Yang2023. 2023-02-14 13:34
    关注

    可能是因为你在paintEvent函数中没有指定图像的缩放比例。在绘制图像时,要指定图像的缩放比例,比如:

    QRect rect=QRect(lx,ly,w,h);
    painter.drawPixmap(rect, fullScreen, rect, Qt::KeepAspectRatio);

    这样就可以保持图像缩放比例,不会导致图像放大。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月22日
  • 已采纳回答 2月14日
  • 创建了问题 2月14日

悬赏问题

  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan