0
我對如何實現某種圖形編輯器有一個小問題。 對於繪圖我使用這種方法: 首先我檢查是否鼠標左鍵單擊,然後我在我的QPixmap上event-> pos()繪製一個像素,然後我調用update();重新繪製它。如果鼠標移動按下按鈕(因爲沒有它,它將只是一些點),我還在兩個點之間的QPixmap上畫線。它工作得很好,但我想知道是否有更優化的方法來做到這一點。下面是一些代碼(我已經跳過部分與變焦,之間的連接丟失的像素到像素等)在QPixmap上優化繪圖
void Editor::paintEvent(QPaintEvent *event)
{
painter.drawPixmap(QRect(0, 0, image.width() * zoom , image.height() * zoom),
image);
}
void Editor::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
setImagePixel(event->pos());
}
}
void Editor::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons() & Qt::LeftButton)
{
setImagePixel(event->pos(), true);
}
}
void Editor::setImagePixel(const QPoint &pos)
{
QPainter painter(&image);
if(image.rect().contains(i, j))
{
painter.begin(&image);
painter.setPen(primaryColor);
painter.drawPoint(i, j);
painter.end();
}
}
哇...非常感謝,真的有幫助!^_^ 我很高興我不必重新發明車輪。祝你今天愉快。 –
還有一個問題。我試圖使用不同寬度的筆。但它看起來不是很好,像這樣 - > http://i.imgur.com/lNdKO.png。我想這是因爲我一直在繪製很多路徑。我怎樣才能擺脫這一點? –
您是否嘗試過'QPainter :: setRenderHint(QPainter :: Antialiasing,true)'?我不完全理解_I我一直在繪製大量路徑_但我不確定它與渲染結果有關 – azf