2011-09-25 46 views
1

我正在开始一个新项目(Windows应用程序),它需要一个简单的图形界面。图形不是应用程序的主要部分,它们背后的算法是,所以我想花尽可能少的时间思考图形。C或C++有高级形状绘制API吗?

我需要绘制简单的形状,用线连接它们,并标记形状和边缘。我的理想API看起来像

n1 = Rectangle(width, height, center1); 
n1->label("Node1"); 
n2 = Circle(radius, center2); 
l = Line(n1->rightEdge()->midpoint()), (n2->center()-Point(n2->radius,0)); 
l->label("pathway",BELOW); 

我知道我当然可以使用低级库建立到这个抽象级别。但我宁愿不要,如果它已经完成了。具有这种抽象级别的图形库是否存在?我对C/C++同样感到满意。 C#也是一个选项。

回答

1

由于编写这种高级系统的普遍容易性,给定一个低级绘图API,您通常不会看到这种2D场景图库。在场景中有明确的对象,并且在对象的层次上移动对象。

我能想到的最接近的是WPF处理绘图的方式,您可以在其中创建图形对象并将它们附加到窗口。而这只是.NET。

其他一切,无论是开罗,AGG,Direct2D等都是即时绘制API。没有“操作”或附加标签的“对象”。你只需在一个位置画东西。如果你想移动一些东西,你必须在新的位置绘制东西。

+0

这很不幸。看起来这种类型的东西一定是多次创建的,我很惊讶没有人开源。 – AShelly

+0

@AShelly会有什么好的服务?无论开发什么系统,都将无情地绑定到底层渲染系统。如果我为开罗写了这样的东西,那么你将会使用开罗来使用它。有一套可用的渲染系统,无论是用于不同的平台还是其他。所以这样的代码将不可避免地是高度专业化的;仅适用于使用该特定渲染系统的小部分程序员。 –

+0

@NicolBolas这似乎有点短视。你的答案是“一般缓解”,但是一旦你开始包括动画,用户交互等等,一个高层次的绘图库可能会变得相当复杂的系统。不断重写这些系统是浪费时间,它会是很高兴看到更多事实上的标准选项。一个外推的例子是iPhone的Cocos2D,它实际上只是一个2D的包装API,可以提供对精灵,场景,图层等的支持。但与从头构建新的游戏引擎相比,它节省了大量的开发时间。 – wallacer

0

I use SDL为我的图形需求。我只将它用于OpenGL上下文(它处理得很好),但它对于获得高效和便携式图形的工作非常友好。如果你不想处理OpenGL,有软件绘图例程可用。

+1

无实际是高的水平,这是用户提出的要求。 –

+0

@NicolBolas是的,你是对的。 –

0

Microsoft为Windows提供了新的Direct2D API,主要针对矢量图形。

0

也许AGG会为你工作。如果你退一步,你也会发现一个更适合商业发展的许可证。

0

您也可以尝试使用Qt的lib Qt是一个伟大的工具包和那多