您尚未登录。

楼主 #1 2018-04-18 17:34:54

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,349
积分: 9202

编译 cairo/basicdrawing/演示代码,出现错误,不能正常运行, 搜了一圈,发现有人出现一模一样问题

编译 cairo/basicdrawing/ 演示代码,出现错误,不能正常运行,
搜了一圈,发现有人出现一模一样问题


https://lists.cairographics.org/archives/cairo/2015-October/026509.html

On Tue, 2015-10-13 at 15:54 +0300, Roman Goldov wrote:
> Hello, i installed CentOS 7 and gtk-devel libaries. I learn GTK+ and
> Cairo. I downloaded (copied) from Internet an exmple of cairo file
> (file9.c that is attached) where i tried to draw lines (graphics) on
> the window. However, the window is opened and it is empty, and also
> theer is warning message in the terminal:
>
> [... at localhost ~]$ gcc -Wall -g file9.c -o file9.exe `pkg-config -
> -cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`
> [... at localhost ~]$ ./file9.exe
>
> (file9.exe:9678): GLib-GObject-WARNING **: gsignal.c:2462: signal
> 'draw' is invalid for instance '0x968440' of type 'GtkDrawingArea'
>
> I would appreciate help in solving the problem. A detailed answer
> would be appreciated because i am a new user of Linux.
> Thank you.
> Roman Goldov
> --
>

You took that example from zcode.com -- so why do you not tell us?
That example is for GTK3 now. It will not work in its current state with
GTK2. You may asks the author if he still has the very old GTK2 version.
Or you may use other examples which have not been ported to GTK3 jet, I
guess there will exists some in internet. Or, you you may port that
example back to GTK2, I think there is not very much to modify, but I do
not know exactly what, because I am using GTK3 for years now.

Is there no GTK3 available for your OS, or have you a good reason for
using old GTK2?

If you really need a GTK2 example and can not find one, let us know, I
may provide one in the next few days...

QQ20180418173554.png

编译指令:

gcc -o c c.c -I/usr/include/gtk-3.0/ -I/usr/include/glib-2.0/ -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include/ -I/usr/include/gdk-pixbuf-2.0/ -I/usr/include/atk-1.0 -lgtk-x11-2.0  -lgobject-2.0 -lrt -lglib-2.0 -pthread -lcairo





离线

楼主 #2 2018-04-18 17:47:20

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,349
积分: 9202

Re: 编译 cairo/basicdrawing/演示代码,出现错误,不能正常运行, 搜了一圈,发现有人出现一模一样问题

gcc -o c c.c -I/usr/include/gtk-3.0/ -I/usr/include/glib-2.0/ -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include/ -I/usr/include/gdk-pixbuf-2.0/ -I/usr/include/atk-1.0 -lgtk-3  -lgobject-2.0 -lrt -lglib-2.0 -pthread -lcairo

QQ20180418180021.png

换成gtk-3.0 了,没有警告了,终于能正常跑起来了。
可以开始 cairo 2d图形引擎入门了。





离线

楼主 #3 2018-04-19 11:03:35

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,349
积分: 9202

Re: 编译 cairo/basicdrawing/演示代码,出现错误,不能正常运行, 搜了一圈,发现有人出现一模一样问题

https://www.ibm.com/developerworks/cn/linux/l-cairo/

#include <gtk/gtk.h>
#include <cairo.h>
#include <cairo-pdf.h>
#include <cairo-ps.h>
#include <cairo-svg.h>
#include <math.h>
#include <gdk/gdkkeysyms.h>
#include <string.h>



#define WIDTH  800
#define HEIGHT 600
#define STRIDE WIDTH*4
#define MAX_COORDS 1024



/* This path desribes what will be drawn later 
   The bulk of it is doing the IBM letters by connect the dots
   at the very end, we will get fancy and add a (R) Registered logo.
*/
static void
travel_path (cairo_t *cr)
{
   gint     pen_radius         = 10;

   cairo_set_source_rgb (cr, 1,1,1);
   cairo_paint (cr);

   cairo_set_line_width (cr, pen_radius*2);

   /* Use IBM Blue Pen Color with no ALPHA */
   cairo_set_source_rgba (cr, .3, .42, .69, 1);


   /* This Draws the IBM 8 Lines "I" Logo */
   cairo_move_to (cr, 10, 10);
   cairo_line_to (cr, 160, 10); 

   cairo_move_to (cr, 10, 40);
   cairo_line_to (cr, 160, 40);

   /* NOTE: Narrower Middle: 1/3 width */
   cairo_move_to (cr, 60, 70);
   cairo_line_to (cr, 110, 70);

   cairo_move_to (cr, 60, 100);
   cairo_line_to (cr, 110, 100);

   cairo_move_to (cr, 60, 130);
   cairo_line_to (cr, 110, 130);

   cairo_move_to (cr, 60, 160);
   cairo_line_to (cr, 110, 160);
   /* END Narrower Middle */

   cairo_move_to (cr, 10, 190);
   cairo_line_to (cr, 160, 190);

   cairo_move_to (cr, 10, 220);
   cairo_line_to (cr, 160, 220);
   /* END "I" DRAWING */




   /* This Draws the IBM 8 Lines "B" Logo */
   cairo_move_to (cr, 170, 10);
   cairo_line_to (cr, 340, 10); 

   cairo_move_to (cr, 170, 40);
   cairo_line_to (cr, 360, 40); 

   cairo_move_to (cr, 200, 70);
   cairo_line_to (cr, 250, 70);
   /*B's have holes in them! */
   cairo_move_to (cr, 300, 70); 
   cairo_line_to (cr, 360, 70); 


   cairo_move_to (cr, 210, 100);
   cairo_line_to (cr, 350, 100); 


   cairo_move_to (cr, 210, 130);
   cairo_line_to (cr, 350, 130); 


   cairo_move_to (cr, 200, 160);
   cairo_line_to (cr, 250, 160);
   /*B's have holes in them! */
   cairo_move_to (cr, 300, 160); 
   cairo_line_to (cr, 360, 160); 


   cairo_move_to (cr, 170, 190);
   cairo_line_to (cr, 360, 190); 


   cairo_move_to (cr, 170, 220);
   cairo_line_to (cr, 340, 220); 
   /* END "B" DRAWING */
	



   /* THE EVER POINTY "M"  */
   cairo_move_to (cr, 370, 10);
   cairo_line_to (cr, 470, 10); 
   cairo_move_to (cr, 560, 10);
   cairo_line_to (cr, 660, 10); 


   cairo_move_to (cr, 370, 40);
   cairo_line_to (cr, 490, 40); 
   cairo_move_to (cr, 540, 40);
   cairo_line_to (cr, 660, 40); 


   cairo_move_to (cr, 400, 70);
   cairo_line_to (cr, 510, 70); 
   cairo_move_to (cr, 520, 70);
   cairo_line_to (cr, 630, 70); 


   cairo_move_to (cr, 400, 100);
   cairo_line_to (cr, 630, 100); 


   cairo_move_to (cr, 400, 130);
   cairo_line_to (cr, 470, 130);
   cairo_move_to (cr, 480, 130);
   cairo_line_to (cr, 550, 130);
   cairo_move_to (cr, 560, 130);
   cairo_line_to (cr, 630, 130); 


   cairo_move_to (cr, 400, 160);
   cairo_line_to (cr, 470, 160);
   cairo_move_to (cr, 490, 160);
   cairo_line_to (cr, 540, 160);
   cairo_move_to (cr, 560, 160);
   cairo_line_to (cr, 630, 160); 


   cairo_move_to (cr, 370, 190);
   cairo_line_to (cr, 470, 190);
   cairo_move_to (cr, 500, 190);
   cairo_line_to (cr, 530, 190);
   cairo_move_to (cr, 560, 190);
   cairo_line_to (cr, 660, 190); 


   cairo_move_to (cr, 370, 220);
   cairo_line_to (cr, 470, 220);
   cairo_move_to (cr, 510, 220);
   cairo_line_to (cr, 520, 220);
   cairo_move_to (cr, 560, 220);
   cairo_line_to (cr, 660, 220); 
 
   /* END POINTY LETTERS */
   
   /* We stroke the path so we see everything we just specified
      by connecting the dots
   */
   cairo_stroke(cr);
 



   /* Let us add a disclaimer and show some fancy cairo: */
   /* We are going to want a nice fine lined circle around the R 
   you need to make sure you have stroked existing things
   that you wanted drawn with the larger pen before continuing. 
   */
   cairo_set_line_width (cr, pen_radius*.5);

   /* Now we will draw the fancy circle around the "R" */
   /* NOTE: The angles are in radians */
   cairo_move_to (cr, 710, 200);
   double angle1 = 0 * (M_PI/180.0);  
   double angle2 = 360 * (M_PI/180.0);

   /* We draw a large black circle */
   cairo_set_source_rgba (cr, 0, 0, 0, 1);
   cairo_arc (cr, 710, 200, 20, angle1, angle2);
   cairo_stroke (cr);

   /* We draw a smaller white circle centered on it */
   cairo_set_source_rgba (cr, 1, 1, 1, 1);
   cairo_arc (cr, 710, 200, 20, angle1, angle2);
   /* We use the fill operator to fill in the circle! */
   cairo_fill (cr);

   /* We are going to draw the letter "R" with black pen*/

   cairo_move_to (cr, 695,212); /* Bottom left of text at point */
   cairo_set_source_rgba (cr, 0, 0, 0, 1);
   cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL,
                                       CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size (cr, 40);
   cairo_show_text (cr, "R");

    /* We stroke everything we have just done 
       to actually draw it...
    */ 
    cairo_stroke (cr);	 

}




/* Apply our path to the surface specified */
static void
draw (cairo_surface_t *surface)
{
    cairo_t *cr;
    cr = cairo_create (surface);

    /* Try applying the scale and rotate factors here to examine their effects on the output!*/
    /* cairo_rotate (cr, -M_PI / 4); */
    /* cairo_scale (cr, 2, 1.0);  */

    travel_path (cr);
    cairo_destroy (cr);
}


/* Function needed to draw to gtk window */
static void
draw_gtk (GtkWidget      *widget,
          GdkEventExpose *eev,
          gpointer        data)
{
  cairo_t *cr;
  cr = gdk_cairo_create (widget->window);
  travel_path (cr);
  cairo_destroy (cr);
}


/* We will draw our path on multiple surfaces to demonstrate 
   some of the various cairo backend
*/
int
main (gint    argc,
      gchar **argv)
{
    cairo_surface_t *surface;



    /* PDF Backend */
    surface = cairo_pdf_surface_create ("IBM.pdf",
					WIDTH, HEIGHT);
    draw (surface);
    cairo_surface_destroy (surface);


    /* Postscript Backend */
    surface = cairo_ps_surface_create ("IBM.ps",
					WIDTH, HEIGHT);
    draw (surface);
    cairo_surface_destroy (surface);


    /* Image backend */
    surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
					  WIDTH, HEIGHT);
    draw (surface);
    cairo_surface_write_to_png (surface, "IBM.png");
    cairo_surface_destroy (surface);


    /* Scalable Vector Graphics Backend */
    surface = cairo_svg_surface_create ("IBM.svg",
					WIDTH, HEIGHT);
    draw (surface);
    cairo_surface_destroy (surface);


    /* GTK Window using Cairo */
    gtk_init (NULL, NULL);        /* Fire up GTK!       */
    GtkWidget *mainwin;           /* Make a new windows */
    GtkWidget *canvas = NULL;     /* Make a new canvas  */
  
    mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    canvas = gtk_drawing_area_new ();
    gtk_widget_set_size_request (canvas, WIDTH, HEIGHT);     

    gtk_container_add (GTK_CONTAINER (mainwin), canvas); /* Place the canvas in the window */
 
    g_signal_connect (mainwin, "destroy", G_CALLBACK (gtk_main_quit), NULL); /* Quit graphically */

    /* Instead of drawing like usual, we connect the expose event to do the drawing! */
    g_signal_connect (G_OBJECT (canvas), "expose-event",
                      G_CALLBACK (draw_gtk), NULL);

    gtk_widget_show_all (mainwin); /* Show the window on the screen */
    gtk_main ();
    return 0;
}

编译指令:

gcc -o e e.c -I/usr/include/gtk-2.0/ -I/usr/include/glib-2.0/ -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include/ -I/usr/include/gdk-pixbuf-2.0/ -I/usr/include/atk-1.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -lgobject-2.0 -lrt -lglib-2.0 -pthread -lcairo

QQ20180419110143.png





离线

#4 2018-04-19 13:39:56

kgp0213
会员
注册时间: 2018-01-15
已发帖子: 149
积分: 149

Re: 编译 cairo/basicdrawing/演示代码,出现错误,不能正常运行, 搜了一圈,发现有人出现一模一样问题

晕哥 说:

https://www.ibm.com/developerworks/cn/linux/l-cairo/

#include <gtk/gtk.h>
#include <cairo.h>
#include <cairo-pdf.h>
#include <cairo-ps.h>
#include <cairo-svg.h>
#include <math.h>
#include <gdk/gdkkeysyms.h>
#include <string.h>



#define WIDTH  800
#define HEIGHT 600
#define STRIDE WIDTH*4
#define MAX_COORDS 1024



/* This path desribes what will be drawn later 
   The bulk of it is doing the IBM letters by connect the dots
   at the very end, we will get fancy and add a (R) Registered logo.
*/
static void
travel_path (cairo_t *cr)
{
   gint     pen_radius         = 10;

   cairo_set_source_rgb (cr, 1,1,1);
   cairo_paint (cr);

   cairo_set_line_width (cr, pen_radius*2);

   /* Use IBM Blue Pen Color with no ALPHA */
   cairo_set_source_rgba (cr, .3, .42, .69, 1);


   /* This Draws the IBM 8 Lines "I" Logo */
   cairo_move_to (cr, 10, 10);
   cairo_line_to (cr, 160, 10); 

   cairo_move_to (cr, 10, 40);
   cairo_line_to (cr, 160, 40);

   /* NOTE: Narrower Middle: 1/3 width */
   cairo_move_to (cr, 60, 70);
   cairo_line_to (cr, 110, 70);

   cairo_move_to (cr, 60, 100);
   cairo_line_to (cr, 110, 100);

   cairo_move_to (cr, 60, 130);
   cairo_line_to (cr, 110, 130);

   cairo_move_to (cr, 60, 160);
   cairo_line_to (cr, 110, 160);
   /* END Narrower Middle */

   cairo_move_to (cr, 10, 190);
   cairo_line_to (cr, 160, 190);

   cairo_move_to (cr, 10, 220);
   cairo_line_to (cr, 160, 220);
   /* END "I" DRAWING */




   /* This Draws the IBM 8 Lines "B" Logo */
   cairo_move_to (cr, 170, 10);
   cairo_line_to (cr, 340, 10); 

   cairo_move_to (cr, 170, 40);
   cairo_line_to (cr, 360, 40); 

   cairo_move_to (cr, 200, 70);
   cairo_line_to (cr, 250, 70);
   /*B's have holes in them! */
   cairo_move_to (cr, 300, 70); 
   cairo_line_to (cr, 360, 70); 


   cairo_move_to (cr, 210, 100);
   cairo_line_to (cr, 350, 100); 


   cairo_move_to (cr, 210, 130);
   cairo_line_to (cr, 350, 130); 


   cairo_move_to (cr, 200, 160);
   cairo_line_to (cr, 250, 160);
   /*B's have holes in them! */
   cairo_move_to (cr, 300, 160); 
   cairo_line_to (cr, 360, 160); 


   cairo_move_to (cr, 170, 190);
   cairo_line_to (cr, 360, 190); 


   cairo_move_to (cr, 170, 220);
   cairo_line_to (cr, 340, 220); 
   /* END "B" DRAWING */
	



   /* THE EVER POINTY "M"  */
   cairo_move_to (cr, 370, 10);
   cairo_line_to (cr, 470, 10); 
   cairo_move_to (cr, 560, 10);
   cairo_line_to (cr, 660, 10); 


   cairo_move_to (cr, 370, 40);
   cairo_line_to (cr, 490, 40); 
   cairo_move_to (cr, 540, 40);
   cairo_line_to (cr, 660, 40); 


   cairo_move_to (cr, 400, 70);
   cairo_line_to (cr, 510, 70); 
   cairo_move_to (cr, 520, 70);
   cairo_line_to (cr, 630, 70); 


   cairo_move_to (cr, 400, 100);
   cairo_line_to (cr, 630, 100); 


   cairo_move_to (cr, 400, 130);
   cairo_line_to (cr, 470, 130);
   cairo_move_to (cr, 480, 130);
   cairo_line_to (cr, 550, 130);
   cairo_move_to (cr, 560, 130);
   cairo_line_to (cr, 630, 130); 


   cairo_move_to (cr, 400, 160);
   cairo_line_to (cr, 470, 160);
   cairo_move_to (cr, 490, 160);
   cairo_line_to (cr, 540, 160);
   cairo_move_to (cr, 560, 160);
   cairo_line_to (cr, 630, 160); 


   cairo_move_to (cr, 370, 190);
   cairo_line_to (cr, 470, 190);
   cairo_move_to (cr, 500, 190);
   cairo_line_to (cr, 530, 190);
   cairo_move_to (cr, 560, 190);
   cairo_line_to (cr, 660, 190); 


   cairo_move_to (cr, 370, 220);
   cairo_line_to (cr, 470, 220);
   cairo_move_to (cr, 510, 220);
   cairo_line_to (cr, 520, 220);
   cairo_move_to (cr, 560, 220);
   cairo_line_to (cr, 660, 220); 
 
   /* END POINTY LETTERS */
   
   /* We stroke the path so we see everything we just specified
      by connecting the dots
   */
   cairo_stroke(cr);
 



   /* Let us add a disclaimer and show some fancy cairo: */
   /* We are going to want a nice fine lined circle around the R 
   you need to make sure you have stroked existing things
   that you wanted drawn with the larger pen before continuing. 
   */
   cairo_set_line_width (cr, pen_radius*.5);

   /* Now we will draw the fancy circle around the "R" */
   /* NOTE: The angles are in radians */
   cairo_move_to (cr, 710, 200);
   double angle1 = 0 * (M_PI/180.0);  
   double angle2 = 360 * (M_PI/180.0);

   /* We draw a large black circle */
   cairo_set_source_rgba (cr, 0, 0, 0, 1);
   cairo_arc (cr, 710, 200, 20, angle1, angle2);
   cairo_stroke (cr);

   /* We draw a smaller white circle centered on it */
   cairo_set_source_rgba (cr, 1, 1, 1, 1);
   cairo_arc (cr, 710, 200, 20, angle1, angle2);
   /* We use the fill operator to fill in the circle! */
   cairo_fill (cr);

   /* We are going to draw the letter "R" with black pen*/

   cairo_move_to (cr, 695,212); /* Bottom left of text at point */
   cairo_set_source_rgba (cr, 0, 0, 0, 1);
   cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL,
                                       CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size (cr, 40);
   cairo_show_text (cr, "R");

    /* We stroke everything we have just done 
       to actually draw it...
    */ 
    cairo_stroke (cr);	 

}




/* Apply our path to the surface specified */
static void
draw (cairo_surface_t *surface)
{
    cairo_t *cr;
    cr = cairo_create (surface);

    /* Try applying the scale and rotate factors here to examine their effects on the output!*/
    /* cairo_rotate (cr, -M_PI / 4); */
    /* cairo_scale (cr, 2, 1.0);  */

    travel_path (cr);
    cairo_destroy (cr);
}


/* Function needed to draw to gtk window */
static void
draw_gtk (GtkWidget      *widget,
          GdkEventExpose *eev,
          gpointer        data)
{
  cairo_t *cr;
  cr = gdk_cairo_create (widget->window);
  travel_path (cr);
  cairo_destroy (cr);
}


/* We will draw our path on multiple surfaces to demonstrate 
   some of the various cairo backend
*/
int
main (gint    argc,
      gchar **argv)
{
    cairo_surface_t *surface;



    /* PDF Backend */
    surface = cairo_pdf_surface_create ("IBM.pdf",
					WIDTH, HEIGHT);
    draw (surface);
    cairo_surface_destroy (surface);


    /* Postscript Backend */
    surface = cairo_ps_surface_create ("IBM.ps",
					WIDTH, HEIGHT);
    draw (surface);
    cairo_surface_destroy (surface);


    /* Image backend */
    surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
					  WIDTH, HEIGHT);
    draw (surface);
    cairo_surface_write_to_png (surface, "IBM.png");
    cairo_surface_destroy (surface);


    /* Scalable Vector Graphics Backend */
    surface = cairo_svg_surface_create ("IBM.svg",
					WIDTH, HEIGHT);
    draw (surface);
    cairo_surface_destroy (surface);


    /* GTK Window using Cairo */
    gtk_init (NULL, NULL);        /* Fire up GTK!       */
    GtkWidget *mainwin;           /* Make a new windows */
    GtkWidget *canvas = NULL;     /* Make a new canvas  */
  
    mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    canvas = gtk_drawing_area_new ();
    gtk_widget_set_size_request (canvas, WIDTH, HEIGHT);     

    gtk_container_add (GTK_CONTAINER (mainwin), canvas); /* Place the canvas in the window */
 
    g_signal_connect (mainwin, "destroy", G_CALLBACK (gtk_main_quit), NULL); /* Quit graphically */

    /* Instead of drawing like usual, we connect the expose event to do the drawing! */
    g_signal_connect (G_OBJECT (canvas), "expose-event",
                      G_CALLBACK (draw_gtk), NULL);

    gtk_widget_show_all (mainwin); /* Show the window on the screen */
    gtk_main ();
    return 0;
}

编译指令:

gcc -o e e.c -I/usr/include/gtk-2.0/ -I/usr/include/glib-2.0/ -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include/ -I/usr/include/gdk-pixbuf-2.0/ -I/usr/include/atk-1.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -lgobject-2.0 -lrt -lglib-2.0 -pthread -lcairo

https://whycan.cn/files/members/3/QQ20180419110143.png

这段代码我没编译成功,然后我就把其中的cairo部分直接cut至xboot的analogclock里面,然后就可以看到和你一样的效果了

离线

#5 2018-04-19 13:52:16

daydayup
会员
注册时间: 2017-10-09
已发帖子: 343
积分: 343

Re: 编译 cairo/basicdrawing/演示代码,出现错误,不能正常运行, 搜了一圈,发现有人出现一模一样问题

厉害了大神们,给你们一起学习cairo

离线

#6 2018-04-19 13:53:27

daydayup
会员
注册时间: 2017-10-09
已发帖子: 343
积分: 343

Re: 编译 cairo/basicdrawing/演示代码,出现错误,不能正常运行, 搜了一圈,发现有人出现一模一样问题

刚刚搜了一下,gtk3和Firefox后端已经全部用cairo了。

离线

#7 2018-04-19 14:57:23

lcfmax
会员
注册时间: 2018-04-13
已发帖子: 325
积分: 268.5

Re: 编译 cairo/basicdrawing/演示代码,出现错误,不能正常运行, 搜了一圈,发现有人出现一模一样问题

大神,新东东么,之前没了解过

离线

#8 2018-04-19 15:07:50

daydayup
会员
注册时间: 2017-10-09
已发帖子: 343
积分: 343

Re: 编译 cairo/basicdrawing/演示代码,出现错误,不能正常运行, 搜了一圈,发现有人出现一模一样问题

lcfmax 说:

大神,新东东么,之前没了解过

xboot开源项目使用的2d图形引擎,
xboot用lua脚本再次封装一次,
非常方便使用。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn