【发布时间】:2016-11-06 21:23:19
【问题描述】:
我正在构建一个 2D 绘图画布,允许用户在屏幕上绘制形状,方法是首先选择您要绘制的形状,然后单击绘图区域以绘制您的形状。下面是 UI 的外观,以获得更好的可视化效果:
到目前为止,我有一些代码允许用户单击所需的形状,绘制该形状,然后单击另一个形状进行绘制,依此类推...
首先我检查我的 processMouse() 函数中是否有一个按钮被点击:
if (x >= 0 && x <= 95 && y >= 302 && y <= 380) { // area of SQUARE shape
// squareShape = false by default
squareShape = true;
}
else squareShape = false;
如果有,我们在我的 display() 函数中突出显示形状:
if (squareShape != false) {
drawHighlight(100, 50, 350, true); // highlighted SQUARE
}
在同一个函数中,我们可以绘制一些点:
if (areaClicked2 != false) {
for (int i = 0; i < points.size();i++)
{
//areaClicked2 = true;
glLineWidth(1);
glBegin(GL_LINES);
glVertex2i(points[i].x + lineOffset.x, points[i].y + lineOffset.y);
}
}
我对其他每个按钮都应用了完全相同的方法,它们似乎都工作正常...
我的问题?
如果我点击一个按钮来绘制正方形,它会绘制几个正方形,但是当我点击另一个按钮时,我的正方形会消失,因为我没有选择正方形按钮。因此,对于我单击绘图时的每个按钮,形状仅在我单击另一个按钮之前可见。我该如何解决这个问题?
编辑:
每次我想为新形状创建一个新的点向量时,我都会像这样创建一个新向量:
std::vector <point> lines; // old vector
point OnePoint;
std::vector <point> dots; // new vector
point OneDot;
我不应该这样做吗?如果没有,我该怎么办?我试图保留lines 并创建新的point 变量,但是当我绘制时,它们完全相同。
【问题讨论】:
-
您发布的代码不包括相关部分。您可能将它包装在某个地方的
if中。 -
你确定吗?我确定我只需要在单击其他按钮时显示每个 for 循环的代码
标签: c++ opengl visual-studio-2015 2d