程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 應用C言語的Cairo圖形庫繪制太極圖實例教程

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

編輯:關於C++

應用C言語的Cairo圖形庫繪制太極圖實例教程。本站提示廣大學習愛好者:(應用C言語的Cairo圖形庫繪制太極圖實例教程)文章只能為提供參考,不一定能成為您想要的結果。以下是應用C言語的Cairo圖形庫繪制太極圖實例教程正文


前言

能夠許多人對直接用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" />

總結

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved