2
저는 직사각형을 그리는 이미지가 있습니다. 그런 다음 사각형의 내용을 다른 QLabel로 복사하려고합니다. 이것은 작동하지만 복사 된 이미지를 이미지의 왼쪽 상단 모퉁이에서 정렬 할 수없는 것 같습니다. 여기에 내가하고있는 일이있다QPixmap 다른 이미지로 그려진 사각형의 내용을 복사하십시오.
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);
아래 그림은 빨간색 사각형이있는 이미지이며 괜찮습니다. 위쪽 그림은 사각형 내용의 복사본입니다. 유일한 문제는 왼쪽 상단에서 시작하지 않는 것입니다.
왼쪽 상단에 복사 된 콘텐츠가 표시되지 않는 이유에 대한 제안.
감사합니다,'왜 우리는 새로운'QRectF'으로서, sourceRect 생성 : 나는 다음과 같은 코드에 의해이 문제를 해결 것 ? – MistyD
@MistyD 소스 이미지의 일부를 대상 사각형 영역으로 그립니다. 코드를 이해하기 쉽게 만들기 위해 생성 된 sourceRect이지만 기술적으로는 드롭 다운하고 '직사각형'만 사용하면됩니다. – vahancho