2012-07-08 35 views
1

我想开发一个小应用程序,允许用户使用矩形来注释图像的不同部分。例如,用户可以在标有“head”的图像上绘制矩形,此应用可以获取该矩形的参数(高度,宽度,中心坐标等)。 有时我也需要旋转这个矩形来选择一个特定的区域。在图像上画一个矩形,我怎样才能旋转这个矩形,并获取它的参数?

我想使用Qt来实现我的想法,但我不知道如何:

  1. 获取绘制的矩形用户的参数。 (高度,宽度,中心坐标...)
  2. 如何旋转矩形并获取旋转角度。
+1

你在错误地观察你的问题。如果您的应用没有该信息,您的应用如何能够首先绘制矩形?选择绘制这些矩形的方式,以及用户操作它们的方式,并且您将拥有所有需要的东西。看看Qt的例子和教程来获取想法。 – Mat 2012-07-08 13:54:26

+0

@Mat Hey Mat。其实这是一个手动注释应用程序,用户应该使用鼠标来选择区域,应用程序可以收集该区域的信息,所以这个应用程序将首先加载图像,然后用户选择区域。很难实现我的应用程序绘制矩形并让用户操纵它,因为在一个图像中查找“头部”很困难,而且这项工作应该由用户在此项目中完成。 – hakunami 2012-07-09 08:39:03

+0

是的,确切地说。你的应用程序将处理用户的点击和鼠标移动到图像上。这是你的应用程序将根据这些点击/移动/菜单操作等来绘制矩形。您将获得所需的信息。 – Mat 2012-07-09 08:55:19

回答

1

要让矩形用户绘制,您需要在绘图小部件中获取鼠标事件。您可以重新实现Widget的mousePressEventmouseMoveEvent,mouseReleaseEvent或将event filter安装到此Widget。当用户按下左键时,您应该记住事件的pos()作为矩形的左上角。当用户在此之后移动鼠标时,应该设置移动事件的矩形ro pos()的右下角。释放按钮必须提交创建一个矩形。

有几种绘制矩形的方法。您可以实施paintEvent并在其内部使用QPainter。但我认为最好的方法是使用QGraphicsScene。您可以创建可见的矩形,移动和旋转它们。

+0

嘿,Riateche。我检查[QGraphicsScene](http://qt-project.org/doc/qt-4.8/qgraphicsscene.html)的功能,但我不知道如何旋转矩形并显示它。你能解释更多吗?非常感谢你。 – hakunami 2012-07-10 03:10:02

+0

使用[addRect](http://qt-project.org/doc/qt-4.8/qgraphicsscene.html#addRect)创建一个矩形。该函数将返回一个可以使用[setRotation](http://qt-project.org/doc/qt-4.8/qgraphicsitem.html#setRotation)方法旋转的对象。 – 2012-07-10 08:21:56

+0

什么是从用户获得旋转角度的正确方法? – hakunami 2012-07-10 08:30:50