用 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()()?begPos.x():endPos.x();//矩形截图区域左上角x坐标
int ly = begPos.y()()?begPos.y():endPos.y();//矩形截图区域右上角x坐标
int w = begPos.x()()?endPos.x()-begPos.x():begPos.x()-endPos.x();//矩形截图区域宽度
int h = begPos.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);
}
截出来就是这样,所有图标都被放大了,并且最小化的窗口也显示出来,这是为什么呢
可能是因为你在paintEvent函数中没有指定图像的缩放比例。在绘制图像时,要指定图像的缩放比例,比如:
QRect rect=QRect(lx,ly,w,h);
painter.drawPixmap(rect, fullScreen, rect, Qt::KeepAspectRatio);
这样就可以保持图像缩放比例,不会导致图像放大。