Tag: cairo

了解cairo_rotate

我想了解cairo_rotate函数。 请考虑以下代码。 我希望绘制一个十字,但只绘制水平线(旋转前)。 我的错是什么? cairo_move_to(cr,0,HEIGHT/2.); cairo_line_to(cr,WIDTH,HEIGHT/2.); cairo_stroke(cr); //horizontal line cairo_rotate(cr,90.*(M_PI/180.)); cairo_move_to(cr,0,HEIGHT/2.); cairo_line_to(cr,WIDTH,HEIGHT/2.); cairo_stroke(cr); //this line isn’t painted

开罗从数据加载图像

我对cairo库有疑问。 我下载了一张图片,然后将其放入缓冲存储器中。 在cairo中是否有任何解决方案从内存中的数据加载图像? 谢谢

如何使用GTK + / Cairo旋转图像

我有一个简单的应用程序,应该使用GTK+和Cairo每隔x毫秒旋转一个装饰轮。 我在下面有一些代码从计时器调用cairo_rotate() 。 但是,图像不会改变。 我是否必须使图像无效以使曝光事件触发? 我对开罗这么新,一个简单的例子演示如何在GTK+使用Cairo旋转图像将受到高度赞赏。 #include #include cairo_surface_t *image; cairo_t *cr; gboolean rotate_cb( void ) { cairo_rotate (cr, 1); //cairo_paint(cr); printf(“rotating\n”); return( TRUE ); } static gboolean on_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data) { cr = gdk_cairo_create (widget->window); cairo_set_source_surface(cr, image, 0, 0); cairo_paint(cr); printf(“Paint\n”); //cairo_destroy(cr); return FALSE; } int main(int argc, char *argv[]) { […]

开罗和内存泄漏修复了valgrind

在我的程序中,即使执行所有明显的内务处理,例如调用cairo_destroy() , cairo_surface_destroy() …, valgrind总是发现内存泄漏,泄漏都是cairo依赖( freetype , pixman ,…)。 如何在cairo之后进行清理,以便valgrind不会检测到任何泄漏,或者泄漏是否正常? 样本输出 ==1861== HEAP SUMMARY: ==1861== in use at exit: 1,996,663 bytes in 532 blocks ==1861== total heap usage: 21,915 allocs, 21,383 frees, 95,411,698 bytes allocated ==1861== ==1861== LEAK SUMMARY: ==1861== definitely lost: 0 bytes in 0 blocks ==1861== indirectly lost: 0 bytes in 0 blocks […]

在c ++项目中放置以及如何包含dll文件的位置?

我阅读本指南 ,向您介绍使用Cairo和Visual C ++创建“可视化”应用程序所需的步骤。 本指南建议您下载某些dll文件并将它们存储在创建可执行文件的目录中(调试)。 以下是Nil在他的教程中引用的文件列表: cairo Binaries(是的,你也需要二进制包,因为Dev一个不包含DLL) – > libcairo-2.dll zlib二进制文件 – > zlib1.dll libpng Binaries – > libpng12-0.dll Freetype二进制文件 – > freetype6.dll FontConfig二进制文件 – > libfontconfig-1.dll expat二进制文件 – > libexpat-1.dll 正如你所看到的,它是相当多的文件。 我一直想知道这是否是“正确”的做法? 在这种情况下,是否存在被视为“最佳实践”的替代方式?

如何在GTK3中的GtkDrawingArea上更改鼠标光标?

这是从我之前的问题得出的,我试图将鼠标光标设置为在hover在GtkDrawingArea上时交叉发。 我试图将ebassi的答案应用于zetcode的以下代码 。 到目前为止我有: #include #include static void do_drawing(cairo_t *); struct { int count; double coordx[100]; double coordy[100]; } glob; static gboolean on_draw_event(GtkWidget *widget, cairo_t *cr, gpointer user_data) { do_drawing(cr); return FALSE; } static void do_drawing(cairo_t *cr) { cairo_set_source_rgb(cr, 0, 0, 0); cairo_set_line_width(cr, 0.5); int i, j; for (i = 0; i <= glob.count – […]

如何在Gtk 2窗口上创建cairo_t

我有一个旧应用程序,现在正在编译Gtk 2,但我需要介绍使用Cairo。 我无法弄清楚如何从我的Widgets创建必要的cairo上下文(cairo_t)。 这是我到目前为止要学习的代码,从Gtk 3教程修改(* ahem * cribbed)。 问题的关键是从窗口小部件创建一个cairo表面。 就目前而言,该调用是一个草图,它不会编译,更不用说运行了。 记住,我的目标是Gtk2,而不是3,至少在这一点上。 /* Snitched from http://zetcode.com/gfx/cairo/cairobackends/ on 13 Jan 2014 */ #include #include #include int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *darea; cairo_surface_t *surface; cairo_t *cr; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); darea = gtk_drawing_area_new(); gtk_container_add(GTK_CONTAINER(window), darea); g_signal_connect(window, “destroy”, G_CALLBACK(gtk_main_quit), NULL); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_set_default_size(GTK_WINDOW(window), 400, […]