2016-10-10 75 views
1

我試圖呈現一個QGraphicsScene使用下面的代碼使用Qt5圖像:QPainter的QImage的到

QImage image(outputWidth, outputHeight, QImage::Format_ARGB32_Premultiplied); 
QPainter painter(&image); 
scene->render(&painter); 
painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); 
image.mirrored().save("output.png"); 

的問題是,過於接近圖像邊界點不渲染。有沒有辦法強制填充/保證金?

+0

無關:在*繪製後設置繪畫選項*沒有意義。是的,有一種方法可以獲得邊距:獲取大於「sceneRect」的圖像,轉換畫家以稍微偏移原點,然後將實際繪圖區域傳遞給「渲染」。 – peppe

回答

0

您可以通過渲染到較大的圖像然後剪切到較小的圖像來實現墊。

int pad_width = 4; 
QImage image; 
QImage padded_image(outputWidth + 2 * pad_width, outputHeight + 2 * pad_width, QImage::Format_ARGB32_Premultiplied); 
QPainter painter(&padded_image); 
scene->render(&painter); 
painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); 
image = padded_image.copy(pad_width, pad_width, outputWidth, outputHeight); 
image.mirrored().save("output.png");