我有一個QImage代表一張空白紙和一張QPainter,用於在此圖像上繪製。 有時候,我會在任何繪畫操作之前旋轉/翻譯QPainter,以便以「風景」方向繪製該圖像。將旋轉的QPainter剪輯繪製到QImage的不正確區域
下面是代碼的簡化片斷:
_image = new QImage(paperRect().size(), QImage::Format_RGB888);
_painter->begin(_image);
if (_orientation == QPrinter::Landscape)
{
_painter->translate(0, _image->height());
_painter->rotate(270);
}
// Painting operations here.
不幸的是,我曾預計這是行不通的。看起來,儘管畫家已經旋轉過,但它並不知道它可以畫的「新」邊界,從而裁剪成「肖像」的大小。
我試過以下無效:關閉剪輯(_painter->setClipping(false);
),設置新的剪輯矩形(_painter->setClipRect(0, 0, _image.height(), _image.width());
),並以各種方式調整窗口和視口。
我已經瀏覽了QPainter和QImage的文檔,並搜索了互聯網,但我還沒有發現此前討論過的這個特定問題。
好像你遇到了Qt錯誤。 –
一個bug會隱含現有代碼的問題,這看起來更像是代碼中缺少的場景考慮。 – dtech
'paperRect()。size()'的值是什麼?如果仍然設置爲縱向格式(例如,A4尺寸爲210x294毫米),這可以解釋很多。 – JvO