⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cairosimple.c

📁 GTK+-2.0源码之pango-1.15.6.tar.gz
💻 C
字号:
#include <config.h>#include <math.h>#include <pango/pangocairo.h>static voiddraw_text (cairo_t *cr){#define RADIUS 150#define N_WORDS 10#define FONT "Sans Bold 27"  PangoLayout *layout;  PangoFontDescription *desc;  int i;  /* Center coordinates on the middle of the region we are drawing   */  cairo_translate (cr, RADIUS, RADIUS);  /* Create a PangoLayout, set the font and text */  layout = pango_cairo_create_layout (cr);  pango_layout_set_text (layout, "Text", -1);  desc = pango_font_description_from_string (FONT);  pango_layout_set_font_description (layout, desc);  pango_font_description_free (desc);  /* Draw the layout N_WORDS times in a circle */  for (i = 0; i < N_WORDS; i++)    {      int width, height;      double angle = (360. * i) / N_WORDS;      double red;      cairo_save (cr);      /* Gradient from red at angle == 60 to blue at angle == 240 */      red   = (1 + cos ((angle - 60) * G_PI / 180.)) / 2;      cairo_set_source_rgb (cr, red, 0, 1.0 - red);      cairo_rotate (cr, angle * G_PI / 180.);      /* Inform Pango to re-layout the text with the new transformation */      pango_cairo_update_layout (cr, layout);      pango_layout_get_size (layout, &width, &height);      cairo_move_to (cr, - ((double)width / PANGO_SCALE) / 2, - RADIUS);      pango_cairo_show_layout (cr, layout);      cairo_restore (cr);    }  /* free the layout object */  g_object_unref (layout);}int main (int argc, char **argv){  cairo_t *cr;  char *filename;  cairo_status_t status;  cairo_surface_t *surface;  if (argc != 2)    {      g_printerr ("Usage: cairosimple OUTPUT_FILENAME\n");      return 1;    }  filename = argv[1];  surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,					2 * RADIUS, 2 * RADIUS);  cr = cairo_create (surface);  cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);  cairo_paint (cr);  draw_text (cr);  cairo_destroy (cr);  status = cairo_surface_write_to_png (surface, filename);  cairo_surface_destroy (surface);  if (status != CAIRO_STATUS_SUCCESS)    {      g_printerr ("Could not save png to '%s'\n", filename);      return 1;    }  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -