一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - C/C++ - 利用C語(yǔ)言的Cairo圖形庫(kù)繪制太極圖實(shí)例教程

利用C語(yǔ)言的Cairo圖形庫(kù)繪制太極圖實(shí)例教程

2021-04-22 15:17hai0808 C/C++

這幾天都在研究Cairo圖形庫(kù),這是一個(gè)開源跨平臺(tái)的圖形庫(kù),相對(duì)于OpenGL來(lái)說(shuō)更容易上手使用。這篇文章是利用C語(yǔ)言的Cairo圖形庫(kù)繪制了一個(gè)太極圖,對(duì)大家學(xué)習(xí)Cairo圖形庫(kù)具有一定的參考借鑒價(jià)值,下面來(lái)一起看看吧。

前言

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

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

實(shí)例代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <cairo.h>
 
#define SIZE (640) /* 太極圖大小 */
#define CX (SIZE / 2) /* 太極圓中心橫坐標(biāo) */
#define CY (SIZE / 2) /* 太極圓中心縱坐標(biāo) */
#define R (SIZE / 2) /* 太極圓半徑 */
 
/* 把角度轉(zhuǎn)換為所對(duì)應(yīng)的弧度 */
#define ANGLE(ang) (ang * 3.1415926 / 180.0)
 
int main(int argc, char *argv[])
{
 /* 創(chuàng)建32位RGBA顏色格式的Cairo繪圖環(huán)境,直接在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);
 
 /* 繪制陰陽(yáng)圓 */
 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);
 
 /* 繪制陰陽(yáng)線 */
 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的渲染效果存儲(chǔ)到圖片中 */
 cairo_surface_write_to_png(surface, "taichi.png");
 /* 銷毀并退出Cairo繪圖環(huán)境 */
 cairo_destroy(cr);
 cairo_surface_destroy (surface);
 
 return 0;
}

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

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

運(yùn)行后的效果是這樣的,大家可以試試看。

利用C語(yǔ)言的Cairo圖形庫(kù)繪制太極圖實(shí)例教程

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問大家可以留言交流。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品成人a | 波多野结中文字幕在线69视频 | 亚洲美女人黄网成人女 | 亚洲精品福利一区二区在线观看 | 三级黄色片在线观看 | 婷婷丁香视频 | 精品国产乱码久久久人妻 | 欧美yw193.c㎝在线观看 | 精品国产成人AV在线看 | 国产乱码免费卡1卡二卡3卡四 | 国产精品视频网 | 久久99国产综合精品AV蜜桃 | 久久久精品日本一区二区三区 | 91精品国产美女福到在线不卡 | 91麻豆国产 | 欧美一级片在线免费观看 | 好大好粗好爽 | 韩国女主播在线大尺无遮挡 | 牧教师| 激情艳妇| 韩国三级年轻小的胰子完整 | 青青草在观免费 | 日本卡一卡2卡3卡4精品卡无人区 | 日本动漫xxxxxx| 国产午夜亚洲精品理论片不卡 | 99草视频| 国产福利资源网在线观看 | 免费人成在线观看视频播放 | 国产盗摄女厕美女嘘嘘 | 日本高清视频在线的 | 四虎在线精品免费高清在线 | 精品国产自在现线拍国语 | 毛片免费观看的视频 | 午夜精品久久久久久久2023 | 精品人伦一区二区三区潘金莲 | 国产欧美精品一区二区三区四区 | 脱jk裙的美女露小内内无遮挡 | 亚洲邪恶天堂影院在线观看 | 白丝捆绑vk | 俄罗斯处女 | 深夜福利影院在线观看 |