C ++ / Qt中的闭合轮廓

时间:2016-05-18 12:28:06

标签: c++ qt

我在2D平面图上有一组点(List<ITask> tasks = new WritableList(new ArrayList<ITask>(), ITask.class); // Let's say tableViewerTasks is your TableViewer's name DragSource sourceTasks = new DragSource(tblTasks, DND.DROP_MOVE); sourceTasks.setTransfer(new Transfer[]{TaskTransfer.INSTANCE}); sourceTasks.addDragListener(new MyDragSourceListener(tableViewerTasks, true, ITask.class)); DropTarget targetTasks = new DropTarget(tblTasks, DND.DROP_MOVE); targetTasks.setTransfer(new Transfer[]{TaskTransfer.INSTANCE}); targetTasks.addDropListener(new MyDropAdapter<ITask>(tableViewerTasks, ITask.class, tasks)); ),我想要应用一个蒙版(它是一个封闭的轮廓:方形,圆形,多边形...)来它。 如果掩码(或掩码下)包含一个点,则不会出现,否则会出现。

例如,如果蒙版是一个矩形,其左上角的坐标为std::pair,宽度和高度为double(m_x,m_y),则该点将包含在如果出现掩码(并且不应出现):

m_width

对于简单的形状(矩形,圆形)来说并不困难,但是你会怎么做/你会用什么来考虑像多边形这样的更难形状? Qt(5.6)是这么做的?或者我应该使用像OpenCv这样的东西吗?

编辑1

Qt可以使用QPolygonF类(感谢Aurélien),但是你知道std是否正在这样做吗?我们实现了我们的数据库而没有std以外的任何其他库,如果我们可以继续它会很好,如果不是它不是问题。

1 个答案:

答案 0 :(得分:3)

您可以使用QPolygonF类。

有一个QPolygonF :: containsPoint方法。

修改

我不知道如何做到这一点,但实施起来很简单:

Point in Polygon Algorithm

http://www.codeproject.com/Tips/84226/Is-a-Point-inside-a-Polygon