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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

cario java_Cairo图形库 概述

發(fā)布時(shí)間:2023/12/3 综合教程 36 生活家
生活随笔 收集整理的這篇文章主要介紹了 cario java_Cairo图形库 概述 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

Cairo圖形庫??1.?概述

歡迎來到Cairo圖形教程.這個(gè)教程將教你Cairo

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

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

2D 矢量圖形

有兩種不同的計(jì)算機(jī)圖形. 矢量和光柵圖形.

光柵圖形作為像素的集合來呈現(xiàn)圖象.矢量圖形是使用諸如點(diǎn)/線/曲線或多邊形等幾何圖元來呈現(xiàn)圖像. 這些圖元使用數(shù)學(xué)方程來創(chuàng)建.

計(jì)算機(jī)圖形的兩種類型各有優(yōu)缺點(diǎn).矢量圖形比之光柵圖形的優(yōu)點(diǎn)是:

更小

無限制縮放

移動縮放填充旋轉(zhuǎn)不會降低圖形的質(zhì)量

Cairo

Cairo 是一個(gè)創(chuàng)建2D矢量圖形的庫. 它是用C編寫的. 和其他計(jì)算機(jī)語言的綁定有 Python,

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

Cairo 支持多種后臺.

X Window System

Win32 GDI

Mac OS X Quartz

PNG

PDF

PostScript

SVG

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

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

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

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

庫就是GTK+系統(tǒng)的一部分了.

Compiling exampes

這個(gè)例子用C語言創(chuàng)建. 我們使用GNU C編譯器來編譯它們.

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

gtk+-2.0` example.c

Cairo 定義

在教程的這個(gè)部分,我們?yōu)镃airo圖形庫提供一些有用的定義.它將幫助我們更好的理解Cairo繪圖模型.

要在Cairo里畫點(diǎn)東西,我們必須先創(chuàng)建一個(gè)Cairo上下文(context).Cairo上下文擁有描繪繪制怎樣完成的所有的圖形狀態(tài)參數(shù).

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

gdk_cairo_create()函數(shù)調(diào)用為繪制創(chuàng)建一個(gè)cairo上下文(context)

cairo_t *cr;

cr = gdk_cairo_create(widget->window);

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

cairo_t 結(jié)構(gòu)包含渲染設(shè)備的當(dāng)前狀態(tài),包含已經(jīng)繪制的形狀的坐標(biāo).技術(shù)上說,cairo_t對象被稱為Cairo上下文.

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

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

GDK并不封裝Cairo

API.它允許創(chuàng)建一個(gè)Cairo上下文,可被用作在GDKdrawable上繪制.有另外的函數(shù)允許轉(zhuǎn)換GDK的矩形和區(qū)域到Cairo路徑并使用像素緩沖來做繪制操作.

Path

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

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

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

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

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

Source

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

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

Surface

Surface是我們需要繪制到的目標(biāo)地.

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

文檔提及下列表面:

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

在源應(yīng)用到表面之前要先經(jīng)過過濾. Mask用作過濾器. Mask決定源應(yīng)用到哪,不應(yīng)用到哪.

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

Pattern

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

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。