绘图区域部件(DrawingArea Widget)

DrawingArea部件是一个空白的窗口,让你可以自由的创造任何你想要的图形。伴随着这种自由而来的是绘制这个部件的责任。在部件第一次显示或者部件被覆盖后又露出的时候它需要重绘自己。大多数部件都包含执行此操作的代码,但是DrawingArea并没有。因此你可以编写自己的绘图函数来确定如何绘制绘部件的内容。你可以调用set_draw_func()成员函数来设置绘图函数。

GTK使用开罗绘图API。而在gtkmm中你可以使用由cairomm提供的开罗C++ API。

你可以使用开罗绘制非常复杂的形状,但你只有一些很基本的方法可用。开罗提供了绘制直线、曲线、圆弧(包括圆)的方法。你可以通过对这些图形进行组合从而创建更为复杂的形状和路径,然后用纯色、渐变、模式等进行填充。除此之外,开罗还可以进行复杂的转换、合成图像和渲染抗锯齿文本等。

开罗和Pango

虽然开罗可以用于渲染文本,但不意味着它能替代Pango。如果你需要进行更高级的文本渲染(例如环绕和省略文本)则Pango会是更好的选择。只有当文本是图形的一部分的时候才应该使用开罗绘制文本。

在本教程的这一部分中,我们将介绍开罗的基本绘图模型,详细描述每个基本绘制元素(包括示例),然后介绍一个使用开罗绘制自定义时钟部件的简单应用程序。