【发布时间】:2022-01-09 19:33:27
【问题描述】:
我正在尝试在 qt 中实现线条绘制。我正在使用两个事件
mouseClickEvent 和 mouseMoveEvent,但是我得到了这种不需要的效果,每当我画一条线并移动鼠标时,每次鼠标移动都会重新创建线。有什么办法可以避免这种情况吗?这可以通过操纵图像来完成吗?不允许使用 Qt 画线函数。
void MyWindow::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
x0 = event->x();
y0 = event->y();
}
update();
}
void MyWindow::mouseMoveEvent(QMouseEvent *event)
{
x1 = event->x();
y1 = event->y();
unsigned char *image;
image = img->bits();
...line drawing algorithm
}
std::vector<std::pair<int, int>> myPair;
void MyWindow::drawPoints(unsigned char *image, int x, int y)
{
myPair.push_back({x, y});
//Trying to clear previous line
image[width*4*myPair[b].second + 4*myPair[b].first] = 0;
image[width*4*myPair[b].second + 4*myPair[b].first + 1] = 0;
image[width*4*myPair[b].second + 4*myPair[b].first + 2] = 0;
//Below draws white line
image[width*4*y + 4*x] = 255;
image[width*4*y + 4*x + 1] = 255;
image[width*4*y + 4*x + 2] = 255;
}
【问题讨论】: