我正在研究一個應用程序,我需要使用Painter填充Pixmap的顏色。 Pixmap是矩形類型(底邊)2個圓角。頂部2個角落是平坦的/正常的。在Qt中只有兩個角落的繪製矩形
我試着使用Qt的drawRoundedRect()API,但它使矩形的所有角都圓了。我需要繪製矩形只有兩個角落圓角和其他兩個平坦。
如果有人遇到這種情況,請給我解決方案。
感謝
我正在研究一個應用程序,我需要使用Painter填充Pixmap的顏色。 Pixmap是矩形類型(底邊)2個圓角。頂部2個角落是平坦的/正常的。在Qt中只有兩個角落的繪製矩形
我試着使用Qt的drawRoundedRect()API,但它使矩形的所有角都圓了。我需要繪製矩形只有兩個角落圓角和其他兩個平坦。
如果有人遇到這種情況,請給我解決方案。
感謝
您可以使用QPainterPath爲:
QPainterPath path;
path.setFillRule(Qt::WindingFill);
path.addRoundedRect(QRect(50,50, 200, 100), 20, 20);
path.addRect(QRect(200, 50, 50, 50)); // Top right corner not rounded
path.addRect(QRect(50, 100, 50, 50)); // Bottom left corner not rounded
painter.drawPath(path.simplified()); // Only Top left & bottom right corner rounded
非常感謝您的回答。它工作正常。 – user2111197 2013-03-08 12:23:42
它也幫助我,謝謝! – netawater 2013-06-02 09:07:36
@ user2111197如果它解決了您的問題,您應該將其標記爲接受的答案 – 2014-09-16 13:24:00
您可以使用樣式表(在運行時或加載文件QSS)。你可以設法做到這一點很容易:
QString str = "bottom-right-radius: 10px; top-right-radius: 0px....";
box->setStylesheet(str);
我猜想框是QLabel內的像素圖(標籤> setPixmap(...))
OR
設置對象名稱的東西(標籤),然後用
QLabel#{名右下半徑:10px的...}
在加載樣式表。
檢查這個站點。它有助於: http://border-radius.com/
爲了擴大Romha Korev的答案。這裏只是一個只有圓角頂部(左上角,右上角)的例子。矩形中的矩形是基於主矩形計算的!
qreal left = 5;
qreal top = 10;
qreal width = 100;
qreal height = 20;
QRectF rect(left, top, width, height);
QPainterPath path;
path.setFillRule(Qt::WindingFill);
path.addRoundedRect(rect, 5, 5);
qreal squareSize = height/2;
path.addRect(QRect(left, top+height-squareSize, squareSize, squareSize)); // Bottom left
path.addRect(QRect((left+width)-squareSize, top+height-squareSize, squareSize, squareSize)); // Bottom right
painter->drawPath(path.simplified()); // Draw box (only rounded at top)
您是否發現任何答案是否正確? – darkgaze 2017-08-29 15:16:12