a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

利用C語言的Cairo圖形庫繪制太極圖實例教程

2020-01-26 14:21:32
字體:
來源:轉載
供稿:網友

前言

可能許多人對直接用C語言繪圖仍然停留在Turbo C的graphics.h年代,或許也有教育老化的原因,畢竟曾經的經典早已成往事,與其想盡各種辦法尋找與其兼容的圖形庫,不如順勢擁抱燦爛的明天。Cario(http://cairographics.org/)是一個非常出色的2D圖形庫,著名的GTK+3.0完全采用Cario作為繪圖引擎,由此可見它的強大和吸引力。

Cario支持X Window,Quartz,Win32,image.buffers,PostScript,PDF和SVG文件等多種輸出設備,開源且跨平臺。或許有人會覺得這么強大的東西用起來一定會十分的棘手,其實不然,它所提供的API函數出乎意料的簡單易用,這篇文章在這里演示一個繪圖太極圖的例子,供大家參考。

實例代碼如下:

#include <cairo.h>  #define SIZE (640) /* 太極圖大小 */ #define CX (SIZE / 2) /* 太極圓中心橫坐標 */ #define CY (SIZE / 2) /* 太極圓中心縱坐標 */ #define R (SIZE / 2) /* 太極圓半徑 */  /* 把角度轉換為所對應的弧度 */ #define ANGLE(ang) (ang * 3.1415926 / 180.0)  int main(int argc, char *argv[]) {  /* 創建32位RGBA顏色格式的Cairo繪圖環境,直接在Memory中渲染 */  cairo_surface_t* surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, SIZE + 1, SIZE + 1);  cairo_t* cr = cairo_create(surface);   /* 繪制太極邊框 */  cairo_set_line_width(cr, 2.0);  cairo_set_source_rgba(cr, 0, 0, 0, 1);  cairo_arc(cr, CX, CY, R, ANGLE(0), ANGLE(360));  cairo_stroke(cr);   /* 繪制陰陽圓 */  cairo_set_source_rgba(cr, 0, 0, 0, 1);  cairo_arc(cr, CX, CY, R, ANGLE(90), ANGLE(270));  cairo_fill(cr);  cairo_set_source_rgba(cr, 1, 1, 1, 1);  cairo_arc(cr, CX, CY, R, ANGLE(-90), ANGLE(90));  cairo_fill(cr);   /* 繪制陰陽線 */  cairo_set_source_rgba(cr, 0, 0, 0, 1);  cairo_arc(cr, CX, CY - R / 2, R / 2, ANGLE(-90), ANGLE(90));  cairo_fill(cr);  cairo_set_source_rgba(cr, 1, 1, 1, 1);  cairo_arc(cr, CX, CY + R / 2, R / 2, ANGLE(90), ANGLE(270));  cairo_fill(cr);   /* 繪制太極眼 */  cairo_set_source_rgba(cr, 1, 1, 1, 1);  cairo_arc(cr, CX, CY - R / 2, R / 10, ANGLE(0), ANGLE(360));  cairo_fill(cr);  cairo_set_source_rgba(cr, 0, 0, 0, 1);  cairo_arc(cr, CX, CY + R / 2, R / 10, ANGLE(0), ANGLE(360));  cairo_fill(cr);   /* 將Memory的渲染效果存儲到圖片中 */  cairo_surface_write_to_png(surface, "taichi.png");  /* 銷毀并退出Cairo繪圖環境 */  cairo_destroy(cr);  cairo_surface_destroy (surface);   return 0; } 

代碼非常之簡單吧,借此拋磚引玉,希望更多的人會喜歡上Cario圖形庫。GCC編譯的話,可以參考如下的命令。

gcc -o taichi $(pkg-config --cflags --libs cairo) taichi.c 

運行后的效果是這樣的,大家可以試試看。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 亚洲成人一区二区三区 | 欧美黄视频在线观看 | 青青青国产精品一区二区 | 黄色免费影院 | 午夜视频在线观看网站 | av一区二区在线观看 | 欧美日韩精品一区二区在线观看 | 久久久久99| 麻豆freexxxx性91精品 | 91精品一区二区 | 久久久久久91 | 国产一区二区视频在线观看 | 久久不卡 | 国产午夜视频在线观看 | 久久性 | 天天干天天摸 | 色欧美日韩 | 亚洲欧美999 | 精品一区二区三区中文字幕 | 日韩在线精品 | 亚洲成人av在线 | 亚洲欧洲一区二区三区 | 久久综合九九 | 自拍偷拍小视频 | 黄色av电影在线观看 | 男人的午夜天堂 | 日韩欧美国产精品综合嫩v 狠狠综合久久 | 成人在线视频网站 | 国产精品视频不卡 | 精品视频在线免费观看 | 亚洲精品乱码久久久久v最新版 | 欧美激情第1页 | 粉色午夜视频 | 一区二区三区在线 | 美女久久 | 夜夜操av | 成人国产精品一级毛片视频 | 国产成人61精品免费看片 | 成人一区二区电影 | 亚洲日本伊人 | 人人看人人插 |