日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cario java_Cairo图形库 概述

發布時間:2024/7/23 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cario java_Cairo图形库 概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考:http://blog.sina.com.cn/s/blog_538732a70100p9ay.html

Cairo圖形庫??1.?概述

歡迎來到Cairo圖形教程.這個教程將教你Cairo

2D矢量繪圖庫基本的和一些高級的主題.大部分例程我們使用GTK+編程庫. 這個教程是用C語言來完成的.

(如果可能,我會附加上一些cairomm的東西)

2D 矢量圖形

有兩種不同的計算機圖形. 矢量和光柵圖形.

光柵圖形作為像素的集合來呈現圖象.矢量圖形是使用諸如點/線/曲線或多邊形等幾何圖元來呈現圖像. 這些圖元使用數學方程來創建.

計算機圖形的兩種類型各有優缺點.矢量圖形比之光柵圖形的優點是:

更小

無限制縮放

移動縮放填充旋轉不會降低圖形的質量

Cairo

Cairo 是一個創建2D矢量圖形的庫. 它是用C編寫的. 和其他計算機語言的綁定有 Python,

Perl, C++, C#, Java. Cairo 是一個多平臺的庫,可工作在linux, BSDs, OSX上.

Cairo 支持多種后臺.

X Window System

Win32 GDI

Mac OS X Quartz

PNG

PDF

PostScript

SVG

這意味著,我們可以使用它在Linux/BSDs, Windows,

OSX上繪制,并且我們可以使用它來創建PNG圖像,PDF文件,PostScript文件和SVG文件.

我們可以比較Cairo庫和 Windows上的GDI+ 庫還有Mac

OS上的Quartz 2D. Cairo 是一個開源軟件庫. 從版本2.8開始, cairo

庫就是GTK+系統的一部分了.

Compiling exampes

這個例子用C語言創建. 我們使用GNU C編譯器來編譯它們.

gcc -o example `pkg-config --cflags --libs

gtk+-2.0` example.c

Cairo 定義

在教程的這個部分,我們為Cairo圖形庫提供一些有用的定義.它將幫助我們更好的理解Cairo繪圖模型.

要在Cairo里畫點東西,我們必須先創建一個Cairo上下文(context).Cairo上下文擁有描繪繪制怎樣完成的所有的圖形狀態參數.

它包括諸如線寬/顏色/要繪制到的表面信息,還有很多其它東西. 它允許實際的繪制函數帶較少的參數來簡化接口.

gdk_cairo_create()函數調用為繪制創建一個cairo上下文(context)

cairo_t *cr;

cr = gdk_cairo_create(widget->window);

這兩行創建一個cairo上下文(context). 在這個例子里,上下文綁定到一個GdkDrawable. 一個

cairo_t 結構包含渲染設備的當前狀態,包含已經繪制的形狀的坐標.技術上說,cairo_t對象被稱為Cairo上下文.

所有cairo繪制都是對于cairo_t對象的.

一個Cairo上下文被綁定到一個明確的表面的.一個pdf/svg/png/gdkDrawable等等.

GDK并不封裝Cairo

API.它允許創建一個Cairo上下文,可被用作在GDKdrawable上繪制.有另外的函數允許轉換GDK的矩形和區域到Cairo路徑并使用像素緩沖來做繪制操作.

Path

一條路徑由很多線組成.這些線被兩個或者更多的錨點連接.? 路徑可以由直線段和曲線組成.

有兩種路徑.開放的和閉合的路徑. 在閉合路徑中,起點和終點重合.在開放路徑中,起點和終點不重合.

在Cairo中,我們以一個空路徑開始.首先我們定義一個路徑然后我們通過畫線和填充使之可見.

很重要一點,每次cairo_stroke()或者cairo_fill()函數調用之后,路徑就空了.我們必須定義一條新的路徑.

一條路徑可以由很多子路徑組成.

Source

Source是我們繪制時使用的顏料.我們可以拿source和筆或墨水比較.我們用它們來繪制輪廓或者填充形狀.

有四種基本的source: Colors, gradients, patterns 和 images

Surface

Surface是我們需要繪制到的目標地.

我們可以使用PDF或PostScript表面渲染文檔,直接通過Xlib和Win32表面繪制到一個平臺.

文檔提及下列表面:

typedef enum _cairo_surface_type {

CAIRO_SURFACE_TYPE_IMAGE,

CAIRO_SURFACE_TYPE_PDF,

CAIRO_SURFACE_TYPE_PS,

CAIRO_SURFACE_TYPE_XLIB,

CAIRO_SURFACE_TYPE_XCB,

CAIRO_SURFACE_TYPE_GLITZ,

CAIRO_SURFACE_TYPE_QUARTZ,

CAIRO_SURFACE_TYPE_WIN32,

CAIRO_SURFACE_TYPE_BEOS,

CAIRO_SURFACE_TYPE_DIRECTFB,

CAIRO_SURFACE_TYPE_SVG,

CAIRO_SURFACE_TYPE_OS2

} cairo_surface_type_t;

Mask

在源應用到表面之前要先經過過濾. Mask用作過濾器. Mask決定源應用到哪,不應用到哪.

Mask的不透明部分允許你拷貝源.? 透明部分不讓你拷貝源到表面.

Pattern

一個cairo 樣式描繪了當繪制到表面時的源. 在cairo中,一個樣式就是某種能夠從之讀取并用作一個繪制操作的源或者mask.

樣式可以是實心的,基于表面的,或者甚至是漸變圖案.

總結

以上是生活随笔為你收集整理的cario java_Cairo图形库 概述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。