[英]How to scale a line with sub-pixel width in Qt?
我想在原始圖像坐標系中顯示帶有線條和多邊形的縮放圖像,其中像素始終為1x1正方形,而與顯示縮放無關。 例如,我想顯示一條從像素(0,0)中心到像素(9,9)中心的細線段,但是下面的代碼段會產生一條粗線,因為比例尺很高:
int main(int argc, char *argv[])
{
const int scale = 44;
QApplication a(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
QImage image("test.bmp");
auto line = new QGraphicsLineItem (0.5, 0.5, 9.5, 9.5);
line->setPen(QPen(Qt::blue));
scene.addPixmap(QPixmap::fromImage(image));
scene.addItem(line);
view.scale(scale, scale);
view.show();
return a.exec();
}
如何在將比例尺應用到寬度之前 ,使這條線變細,使其具有亞像素厚度,從而最終厚度小於scale
的值?
這可以通過使用重新縮放的坐標(比例* 0.5,比例* 0.5,比例* 9.5,比例* 9.5)來實現,但是我想避免這種情況。
看一下void QPen :: setWidth(int width)和void QPen :: setWidthF(qreal width) 。
QPen pen(Qt::blue);
pen.setWidth(0);
line->setPen(pen);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.