gpt4 book ai didi

c++ - QPixmap 将正方形的内容复制到另一个图像中

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:24:42 27 4
gpt4 key购买 nike

我有一张图片,我在上面绘制了一个矩形。之后我试图将矩形的内容复制到另一个 QLabel 上。这似乎可行,但我似乎无法从图像的左上角开始对齐复制的图像。这是我正在做的

QPixmap original_image; 
original_image.load("c:\\Images\\myimg.jpg");
original_image = original_image.scaled(ui.label->size().width(),ui.label->size().height());

//-----------------------------------------------------------------------
//Draw rectangle on this
QPixmap target_two(ui.label->size().width(),ui.label->size().height());
target_two.fill(Qt::transparent);

QPixmap target(ui.label->size().width(),ui.label->size().height());
target.fill(Qt::transparent);

QPainter painter(&target);
QPainter painter_two(&target_two);


QRegion r(QRect(0, 0, ui.label->size().width(), ui.label->size().height()), QRegion::RegionType::Rectangle); //Region to start copying
painter.setClipRegion(r);
painter.drawPixmap(0, 0, original_image); //Draw the original image in the clipped region


QRectF rectangle(x_start,y_start,clipRegion);
painter.drawRoundedRect(rectangle,0,0); //Last two parameters define the radius of the corners higher the radius more rounded it is

QRegion r_two(rectangle.toRect(), QRegion::RegionType::Rectangle);
painter_two.setClipRegion(r_two);
painter_two.drawPixmap(0,0,target);


ui.label->setPixmap(target);

ui.label_2->setPixmap(target_two);

底部图片是带有红色矩形的图像,很好。上图是正方形内容的复制。唯一的问题是它不是从左上角开始的。

关于为什么我没有在左上角获得复制内容的任何建议。

最佳答案

您的逻辑中的问题是 target 和 target_two 图像具有相同的大小 - 标签的大小,并且您将复制的图像绘制在与初始标签中相同的位置。到目前为止,一切都很好。我将通过以下代码解决此问题:

[..]
// This both lines can be removed.
// QRegion r_two(rectangle.toRect(), QRegion::RegionType::Rectangle);
// painter_two.setClipRegion(r_two);

// Target rect. in the left top corner.
QRectF targetRect(0, 0, rectangle.width(), rectangle.height());
QRectF sourceRect(rectangle);
// Draw only rectangular area of the source image into the new position.
painter_two.drawPixmap(targetRect, target, sourceRect);
[..]

关于c++ - QPixmap 将正方形的内容复制到另一个图像中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21105813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com