Tải bản đầy đủ (.pdf) (61 trang)

Nghiên cứu thư viện đồ họa nguồn mở agg và viết ứng dụng biên tập thư viện quản lý mẫu đường, mẫu tô và các biểu tượng trong bản đồ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (25.86 MB, 61 trang )

BO GIAO DUC vA DAo TAO
"

TRUONG D~I HQC' DAN L~P' NGO~I NGU ~ TIN HQC TP.HCM
KHOAC6NGNGHtTH6NGTm

I

r

KHOA LuAN
TOT NGHIEP



NGHIEN CUU THU VIEN DO HOA NGUON
MO AGG vA VIET UNG DUNG BIEN TAp THU
VI~N QuAN LY MAu DliONG, MAu
vA
cAc BIEU TUONG
TRONG BAN DO


TO

k?
I

.
p


GIANG VIEN HU'ONG DAN:
SINH VIEN THVC HltN:

TH.S NGUYEN MINH NAM
PHAN THANH TUNG - 0311267
DUONG HOA PHONG - 0311204


Ml)C Ll)C

G I 01 T HI~U .................................................................................................... 5



,


0,

CHU'ON G 1

7

1.1. Tang quan v~ cac thO' vi~n d6 hQa (Graphic Library)

7

1.2.

Cac d~c di~m chinh cua AGG


8

1.3.

MQt s8 u'ng dl}.ngClla AGG trong thl}.'ct~

12

1.3.1.

SVG Viewer

12

1.3.2.

C rea tive Docs.N et

14

1.3.3.

KSV G

15

1.3.4.

Trang web ban d6 cua cong ty Dolsoft


15

1.3.5.

RealWorld

16

1.3.6.

Ung dl}.ng ch~y tren PDA cua cong ty Dolsoft Inc

Graphics

17

j

1.4.

Su'c m~nh clla template trong C++

18

1.5.

So sanh AGG vo'i GDI+

19


1.6.

Cac khai ni~m cO'ban

21

1.6.1.

Anti-Aliasing va Subpixel Accuracy

1.6.2.

Mau (Color), khong gian mau (Color Space) va dinh d~ng

di~m anh (Pixel Formats)

21

26


1.6.3.

Boon vi h~ tQa dQ (Coordinate

1.6.4.

Scanline Container


1.7.

Units)

28
28

Ki~n truc AGG

31

1.7.1.

Pixel Format Renderers

31

1.7 .2.

Alpha-Mask

32

1.7.3.

Basic Renderers

32

1.7.4.


Scan line Renderer

32

1.7.5.

Span Generator

33

1.7 .6.

Scanline Rasterizer

34

1.7 .7.

0 utli ne Re nd ere rs

34

1.7.8.

Outline Rasterizer

34

1.7.9.


Vertex Conversion

Adaptor

Pipeline

35

1.7.10. Vertex Source

35

1.7.11. Rendering

35

1.8.

Buffer~

K~t lu~n

36

CHUON G 2

37

2.1.


NQi suy mau doon gian (Simple Color Interpolation)

2.2.

Phep bi~n d&i phBi canh vo'i anh (Image Parallelogram

Transformations
2.3.

Using Perspective

Texts Rasterization

Exposures

Transformations)

37

37
39


2.4.

SUOdl,mg API d~ render text

40


2.5.

NQi suy vo'i dU'O'ngcong Bezier (Bezier curve)

41

2.6.

Di~u chinh Gamma trong Anti-Aliasing

47

2.7.

Gouraud Shading

47

2.8.

Alpha-mask

48

2.9.

T:,to chfi' dQc theo dU'o'ng cong va line pattern bftng anh

49




2.10.

K~t lu~n

51

CHU ON G 3

52

3.1.

Yeu c~u

52

3.2.

K~t lu~n

52

3.3.

Hu'6'ng phat tri~n

52


3.4.

Cac man hinh

53

T AI LI~U THAM KHAo

57

PH1) L 1)C

58

5.1.

BCGControlBar

Library (v. 9.51) Professional

Edition

58

5.2.

Unicode trong Visual C/C++

58


5.3.

Tern plates trong C++

60

5.4.

MQt sa thu~t ngfr lien quan

60


Gi&i thi~u

Trang 5

GIOI THItU

£)6 h9a may tlnh la m9t trong nhung llnh V\fCly thu nh~t va phat tri~n
nhanh nh~t cua tin h9C. S\f ra. dai cua d6 h9a may tlnh thl,l'CS\f la CU9Ccach
m~mg trong giao tiSp giua nguai dung va may tinh. V6i luqng thong tin tn,l'c
quan, da d<;tngva phong phu duqc chuy~n Uti qua hinh anh, cac ung dVng d6
h9a may tlnh da loi cu6n nhiSu nguai nha tlnh than thi~n, dS dung, kich thich
kha nang sang t<;tova tang dang k~ hi~u su~t lam vi~c. £)6 h9a may tinh ngay
nay duqc ung dVng r9ng rai trong nhiSu llnh V\fC.Cac u'ng dVng d6 h9a r~t da
d<;tng,phong phu va phat tri~n lien t\lC khong ngung. Ngay nay, h~u nhu
khong co chuang trinh ling dVng nao ma khong su d\mg k9 thu?t d6 h9a d~
lam tang tlnh h~p dfrn Cllaminh.
Hi~n nay co r~t nhiSu thu vi~n d6 h9a ma chung ta co th~ suodVng. £)~u

tien phai k~ dSn la Macromedia Flash, Adobe SVG ... , chung r~t t6t nhung chi
la u'ng dVng nguo'i dung cu6i (end-user) va khong th~ suod\mg lam thu vi~n
trong C++. M9t s6 thu vi~n ph6 biSn khac nhu OpenGL, Apple Quartz, GDI+
thi ch~t luqng d6 h9a 2D l<;tikem, ch?m va d?c bi~t chi dung tren m9t s6 n~n
(platform) nh~t dinh (GDI+ chi dung tren nSn Windows va Quartz chi dung
tren may Apple). Cac thu vi~n ngu6n

ma

(open source library) khac nhu

LibAli, Cairo Graphics cung can qua nhiSu gi6i h<;tnva khong th~ su dVng
trong th\fc tS.
V~n d~ chung cua cac thu vi~n la qua h<;tnch~. Chung 1am9t "h9P den"
(ngay ca thu vi~n ma ngu6n ma), nghla la chung ta khong th~ thay d6i nhung
thu vi~n nay theo y chung ta duqc. V~n dS nu'a la chi phi ban quy~n qua cao.


Gi6i thi~u

Trang 6

Vi~c Vi~t Narn gia nh?p WTO la da: ch~p nh?n hQi nh?p sau rQng toan di~n
vao qua trinh phat trien toan c~u va duang nhien phai ch~p nh?n cac quy dinh
nghiern ng~t cua san chai rnai nay, trong d6 c6 quy dinh vS ban quySn. Vi V?y
chi phi ban quySn qua cao se la tra ng~i Ian trong vi~c ap dl,mg cac thu vi~n
tren.
DS tai "Nghien

CU'U


thU' vi~n dB hQa nguBn mo' AGG va vi~t u'ng

dl}ng bien t~p thU' vi~n quan

ly cac

m~u duo'ng, m~u to va cac bi~u tU'Q'ng

trong ban dB" rna nh6rn th\IC hi~n chQn nghien Cll'llhy vQng se rna ra mQt
huang phat trien cho nhung chuang trinh ung dl,mg c~n db hQa ch~t luqng
cao, t6c dQ nhanh va chi phi th~p,
Chung em xin gu'i 1ai cam an d~n Truang DHDL Ngo~i ngfi' - Tin hQc
TP.HCM, Khoa CNTT, Th~y Co d~c bi~t 1a Th~y Nguy~n Minh Nam da: t?n
tinh giup dO', dQng vien chung em trong su6t thai gian hQCt?P, nghien Cll'llva
thl,fc hi~n dS tai nay.

Nh6rn thl,fc hi~n


Trang 7

Chuang 1 - T6ng quan v~ AGG

CHUaNG 1
TONG QUAN

1.1.

VE ANTI-GRAIN


TAng quan v~ cac thu vi~n

Cac cong

C\l

dB

GEOMETRY

hQa (Graphic Library)

render 2D s~n co nhu Macrornedia Flash, Adobe SVG ...

chi 1£\ ung d\lllg nguai dung cu6i (end-user application) va khong th~ su dVng
lam thu vi~n trong C++.
Cac thu vi~n duqc dung ph6 bi~n nh~t hi~n nay la OpenGL, Apple
Quartz va GDI+. OpenGL la mQt thu vi~n chu~n va t6t nhung ch~t luqng d6
h9a 2D thi kem. Alex Eddy da thl,Ic hi~n rnQt cUQc nghien cu.u chi r5 vi~c
thi~u

ch~t

luqng

trong

h~u


h~t

OpenGL

( />
accelerator
thi render ch~t

luqng kern, ch?m va con nhiSu 16i d~ co th~ su dVng trong thl,l'ct~, chua k~
d~n vi~c chi dung duqc tren nSn Microsoft Windows. Apple Quartz co ch~t
luqng t6t nh~t nhung chi dung duqc tren may Apple. Hai thu vi~n d6 h9a
ngu6n

ma khac

la LibAli cila Raph Levien ( />
Cairo Graphics (l).Vi~c

va

phcit tri~n LibArt g~n day da

bi ngung, con Cairo Graphics vfrn con nhiSu h:;lnch~ nen khong th~ ap dVng
trong thv'c t~. Cairo Graphics vfrn dang trong qua trinh phat tri~n tich Cl,l'Cva
thl,l'CSl,l'dang gia nhung gi6'i h:;lnchinh Clla no la rna hinh render "hardcoded".
MQt thu vi~n rfrt t6t khac la IrnageMagick (l)
nhung chu'c nang chil y~u la xu

I:>"


imh.


Chuang 1 - T6ng quan v~ AGG

Trang 8

V~n dS chung cua cac thu vi~n va cong C\l d6 h9a s~n co la chung qua
h:;mch~. Chung chi la nhfrng "hQp den" (ngay ca v6i thu vi~n ma ngu6n mer).
VS mi;itly thuy~t, chung ta co thS chinh sua thu vi~n ngu6n mo- theo cach ma
chung ta mu6n (n~u khong xet d~n v~n dS ban quySn). Nhung khi chung ta
sua thu vi~n la chung ta da t?O ra mQt phien ban khac cua no va duang nhien
phai c~n th~n dua nhfrng thay d6i do vao cac phien ban m6i han sau nay cua
tac gia. Va diSu nay la mQt can ac mQng. MQt thu vi~n co tinh "mer" th~t sv
khi chung ta co thS mo- rQng cac tinh nang cua no ma khong c~n phai chinh
sua trong ma ngu6n (code). C++ cho phep chung ta lam diSu nay v6i
template. Day chinh la

Co'

ch~ dugc su d\mg xuyen su6t trong AGG giup t?O

nen tinh linh dQng ciia thu vi~n nay.
1.2.

Cae d~e di~m ehinh ella AGG
Anti-Grain Geometry (AGG) la thu vi~n d6 h9a 2D ma ngu6n mer miSn

phi (free of charge graphic library) dugc vi~t theo chu~n C++. D6 h9a vector
2D gio day dugc su d\lng rQng rai trong m9i lo?i ung d\lng va sU'Cm?nh cua

cac bQ xu' ly hi~n t?i lam cho vi~c su dVng d6 h9a vector ch~t lugng cao (high
quality vector graphic) r~t d~ dang. Ch~t lugng cao co nghTa la nhiSu muc
anti-aliasing

(ch6ng rang cua) va subpixel accuracy. Subpixel accuracy

thuong bi danh gia th~p nhung no r~t quan tr9ng trong vi~c dinh vi subpixel
(subpixel positioning). No cling quan tr9ng trong vi~c thi~t l~p dQ rQng duo'ng
th~ng theo phan s6 nghTa la co thS nho han 1 pixel. Render anti-aliasing trong
thvc t~ se trer nen vo dVng n~u khong co subpixel accuracy.
Co thS chung ta nghT AGG la thu vi~n render t?O anh raster trong bQ
nh6

tu

cac ph~n vector (vectorial representation). Nhung dinh nghTa nay chi

g~n dung. MQt cach t6ng quat, chung ta co thS su dVng b~t ky thanh ph~n nao
cua AGG, khong b~t bUQcla rasterizer hay renderer.


Trang 9

Chuang 1- TAngquan v~ AGG

AGG cO th8 sit d\ll1g trong nhi~u img d\ll1g cfut d6 hoa 2D chAt lU(IDg
cao va nhanh. No co th~ duQ'Csit d\ll1g trong cac img d\ll1g GIS/cartography
(h~ th6ng thong tin dia ly/bcin d6) ma cfut giao di~n d6 hoa ngum dimg hAp
dfut, cac lo~ d6 thi va bi~u d6 khac nhau, CAD/CAM...
(platform independent), gon nhe va m~


AGG doc l~p n~n

me. AGG ciing cO th~ dimg mot

cach hoan hao trong cac h~ th6ng nhOOg (embedded system) va thi~t bi di
dong (mobile device).

Hinh 1.1 - Ve dep d6 hoa cua AGG
Dum day la cac

y tuemg va tri~t ly CllaAGG

• Khit fang cua (Anti-Aliasing).

:


Chuang 1 - T6ng quan v~ AGG

Trang 10

• DQ chinh xac subpixel (Subpixel Accuracy).
• Ch~t lugng, hi~u su~t cao nh~t co thS d?t dugc, dQc l~.pn~n (platform
independence) va co kha nang tuang thich.
• Linh dQng va co thS ma rQng.
• Thiet ke g9n nhy (lightweight design), 6n dinh va dang tin c~y.
Cac d?c diSm chinh cua AGG :
• T?o da giac (polygon rasterizer) nhanh va ch~t lugng cao vai 256 mirc
Anti-Aliasing (ch6ng rang cua). Co thS slr d\mg 2 quy t~c to non-zero

va even-odd.
• Vector tuy bien va raster pipeline.
• Cac gradient b~t k5' va d6 bong Gouraud (Gouraud shading).
• Cac phep bien d6i affine anh vai cac lo?i nQi suy khac nhau tu' muc dan
gian bilinear den muc cao han nhu bicubic, spline 16, spline36, sinc,
Lancosz va Blackman.
• M~u t6 (pattern fill) vai cac phep bien d6i affine b~t k5' va phep bien
d6i ph6i canh (perspective transformation).
• Phep bien d6i ph6i canh va bilinear cua vector va dfr li~u anh.


Stroke generator vai cac line join (ph~n ket n6i do?n th~ng) va line cap
(d~u do?n th~ng) khac nhau.

• T?o duang th~ng d?ng dash (Dash line generator).
• Marker nhu d~u va du6i mUi ten (arrowhead/ arrow tail).


Chuang 1 - T6ng quan v~ AGG

Trang 11

• Xen da giac d?ng vector thanh hinh chi1'nh~t nhanh.
• Xen mll'c th~p (low-level) thanh nhi~u vung hinh chli' nh~t (multiple
rectangular regions).
• Alpha-masking.
• Thu~t toan ve QUang th~ng ch6ng rang cua nhanh.
• T?o m~u QUang th~ng (line pattern) v6'i hinh anh b~t kyo
• Render tren nhli'ng kenh mau rieng bi~t.
• Th\l'c hi~n cac phep toan boolean Qa giac (Boolean polygon operations and, or, xor, sub) dl,ra tren thu~t toan xen Qa giac cua Alan Murta

(General Polygon Clipper).
• Th\l'c hi~n cac phep toan boolean d\l'a tren dong quet v6'i t6c QQnhanh
han 5-1 0 l~n so v6'i thu~t toan tren.

• H6 tr9' text suodVng thu vi~n FreeType (l)

va

Windows API (GetGlyphOutlineO).
• Cac phep biSn Q6i phi tuySn tinh b~t ky (Arbitrary

non-linear

transformations ).
Thu vi~n nay QU9'Cbien dich va ki€m tra thanh cong tren cac n~n :
• Microsoft Windows (95, 98, NT4, 2000, XP, 2003). Trinh bien dich
Microsoft Visual C++ v5, v6, v7, Intel C++ v6, GNU C++ tu' v2.96 dSn
v3.4.0.
• Linux, GNU C++.


SunOS.


Trang 12

Chuang 1 - T6ng quan v~ AGG




SGI IRIX64.



MacOS

9, MacOS

X, trinh bien dich Metrowerks

CodeWarrior

8.3,

GNU C++.


QNX.



BeOS.



AmigaOS.

1.3.

MQt s& u'ng d\lng clla AGG trong th\l'c t~


1.3.1. SVG Viewer
SVG (Scalable Vector Graphics - 86 h9a XML dimh cho Web) la ngan
ngfr rna ta d6 h9a 2 chiSu va cac tmg d\lllg d6 h9a trong XML.
SVG chi la mQt vi d\l su d\lng Anti-Grain

Geometry.

Trinh

8i~m chinh cua trinh

xem nay la ch~t IUQ'ng va hi~u su~t cao. Thu~t toan Anti-Aliasing
256 mirc trong su6t. Th\rc t~,AGG
(coverage)

xem

cung c~p

tinh toan chinh xac gia tr! bao phu

cua outline tren m6i a pixel (pixel cell). Ngoai ra trinh xem c6 mQt

d?c di~m r~t t6t rna khang c6 0 b~t cli trinh xem khac. 86 la lo~i b6 "v~n dS
cac c~nh kS nhau" ("problem

of adjacent

nhfrng da giac kS nhau vai anti-aliasing


edges").

N6 xu~t hi~n khi render

va trang gi6ng nhu nhfrng mang

m6ng tren anh. N6i dung ra, c6 th~ lo~i b6 hoan toan v~n dS nay khi cac da
giac hoan toan khang trong su6t. Tuy nhien, c6 th~ giiun hi~u ling d6 d~ h~u
h~t chung khang xu~t hi~n.
Trong trinh xem SVG AGG cho chung ta diSu khi~n v~n dS nay b~ng
cach thay d6i anti-aliasing

gamma va dQ gian no Clla cac da giac. Anti-Grain

Geometry cung c~p mQt cang C\l dp-n gian d~ gian no hay co cac da giac l~i.


Trang13

Chu~gl-T~gqwmv~AGG

Adobe VG Viewer

Hinh 1.2 - ChAt lu<;mgrender gifra Adobe SVG Viewer
Adobe

va AGG

SVG Viewer


AGG

Hinh 1.3 - So s3nh chAt lu<;mgAdobe SVG

va AGG

SVG


Trang 14

Chuang 1- T6ng quan v~ AGG

Hinh 1.4 - Hinh T6ng th6ng Bill Clinton theo djOOdbfutgAGG

1.3.2. Creative Docs.Net
Day hi oong

Cl,1

thi~t k~ dd hoa d\la tren vector (dimg tha vien AGG d~

ve) dimg d~ OOanh chong t~o ra tai lieu (document), sach (manual), poster,
hiOO minh hoa (illustration), set dd (schema), sa dd k~ ho~ch (plan), dd thj
(flow chart) ...


~

.1.
Chuang 1 - Tong quan ve AGG

*'

C,callVC

Trang 15

~@}~

Doc> .NO

Hinh 1.5 - Giao dien chinh cua Creative Docs.NET (sir d\lllg AGG lam thu
vien d6 hQa)
1.3.3. KSVG
KSVG 1(\ hi~n th\lc cho ~c

fa SVG cua W3C (World

Wide Web Consortium), du(]c thi~t k~ 1(\ plugin cho trinh duy~t
web Konqueror d~ hi~ tbi cac 3nh SVG. KSVG sir d\lllg AGG la co ch~
render chinh. Va khi KSVG la mot phfut cua KDE thi nghia 1(\ AGG da du(]c
dua VaGtAt ca cac ban Linux k~ til KDE mm.
1.3.4. Trang web ban

d3 cua

cong ty Dolsoft



Trang 16

Chuang 1- TAngquan v~ AGG

Fo.

Eell

f_

"-

Get _1'5 _

. ..

loch

~

dIrec:tbI

•••

Itlnrq:,:~ Ir.ong~~OO'J1U'ot
7 T_
ftone-505.goSO
• T_
ftonH000095lo.9>22

r~t on
v•••••
90
I~ _'9"ton
•••••••••V.n ••••••• go 1.Yl.
11 _'9"
onllguymVuTn>l.goz:ll
1.2 ContnleSO
e-COlllly.t7o)86
tJ con
to
••••• Ky 1ChoI11Q ••••• go "'" ••
H T""ioIlonT_5lo.1JO
S44
15 T",,'9" .,,_"T""'II-go1.609
T"" leftan -..
1OIaI-1JO
565",
17 T••• "lr't on Dmh T•••• -no -go lD9
tt

T,,"

.1.

0...0

:-61.,

ThI""",


3
QUAN10

QU.! 11

Hinh 1.6 - Trang ban d6 Clla cang ty Dolsoft sir dWlg thu vi~n d6 hQa AGG

1.3.5. RealW orld Graphics
RealWorld Graphics hi trinh bien tw d6 hQa hi~n h6 trQ' cac rna hinh
3D (3D model), anh raster (raster image), va Windows icon. AGG duQ'c dimg
d~ ve cac hinh tron muO'! (smooth) va thuc hi~n cac phep bi~n d6i anh ho~c
cac hi~u ll'ng ~c bi~t.


Chucmg 1 - TAng quan v~ AGG

Hinh 1.7 - Giao di~n ehinh eua RealWorld Icon Editor
1.3.6.

ir ng

dt}ng chtly tren PDA cua cong ty Dolsoft Inc

Hinh 1.8 - Ung d\Ulg sir d\lIlg AGG tren PDA eua Dolsoft

Trang 17


Trang 18


ChuO'ng 1 - T6ng quan v~ AGG

1.4.

Su'c m~nh cua template trong C++
AGG slr d\1ng template trong t~t ca cac ham va lap Clla minh. Co th~

d~t dugc tinh nang tuong
polymorphism),

t\1' b~ng cach Sll' d\1ng da hinh dQng (dynamic

do la override cac ham ao (virtual function), Nhung template

cho phep t6i uu code d~ co thi~t k~ linh dQng va thu?n 19i. Cac lap da hinh chi
lam vi~c t6t

a mtrc

d6i

(vertex

dinh

chi ti~t. MQt tac V\1co ban trong db h9a vector la chuy~n
conversion

MoveTolLineTo/CurveTo,


pipeline).

Vi

d\1 vai

cac

l~nh

nhu

sau do bi~n d6i thanh duo'ng cong, rbi th\1'c hi~n

phep bi~n d6i affine ... Trong h~u h~t cac thu vi~n pipeline dugc "hardcoded".
N~u chung ta mu6n no linh dQng hon nghia la mu6n tuy bi~n pipeline, chung
ta se phai dung da hinh (polymorphism).

Thich hgp la chung ta co mQt ham

ao m6i dinh. Nhung nhu V?y la qua t6n kem d~ co mQt ham ao m6i dinh vai
m6i ph~n tll' pipeline.
MQt

phuong

polymorphism)

phap


ti~p

c?n

nghia la dung template.

khac

la

Phuong

da

hinh

"tinh"

("static"

phap nay khong cho phep

chung ta tr\1'c ti~p xay d\1'ng pipeline dQng luc ch~y (runtime) nhung trong h~u
h~t truang hgp, chung ta khong th\1'c S\1'c~n no. Con n~u th\1'c S\1'c~n da hinh
dQng, chung ta co th~ vi~t trinh bao b9C da hinh (polymorphic
giao di~n (interface)

phu hgp vai template.


wrapper)

co

Trong AGG chung ta co th~ di~u

khi~n toan bQ chuc nang va hi~u su~t. Chung ta co th~ chi slr d\1ng mQt ph~n
Clla AGG. Chung ta co th~ t\1'vi~t renderer muc th~p lam vi~c vai cac khong
gian mau khac nhau, cac ham gradient, span generator ... S\1' cai d?t d\1'a tren
lap da hinh truy~n th6ng se lam chung ta t6n cac lo'i g9i ham ao m6i pixel,
trong khi template cho phep chung ta lam di~u do ma khong t6n them di~u gi.


Chuang 1- T6ng quan

v8 AGG

Trang 19

1.5. So saob AGG vo; GDI+
Chimg ta thie th\lC hi~n mQt cUQcthie nghi~m d~ so sanh hi~u nang giita
AGG va GDI+. Chi ti~t cUQcthie nghi~m nhu bang sau :

Pen(255,q,q,q,

Pen(255,0,0,q

Pen(255,q,0,0

Pen(255,0,q,0


l+qo/04)

1+q%4)

l+qo/04)

l+qo/04)

Brush(64,q,q,

Brush( 64,q,0,

Brush(64,0,q,

Brush( 64,0,0,

q)

0)

0)

q)

255,q,q,q

255,q,0,0

255,0,q,0


255,0,0,q

l+qo/04

l+qo/04

l+qo/04

l+qo/04

128,255,255,2
55/1
128,255,255,2
55/1
LinearGradientBrush «255,255,0,0) & (255,0,255,0))
TextureBrush (Th\lc hi~n phep bi~n dAi tYl~ (0.9,0.7), phep
xoay, to hinh chit nh~t (1000, 450))
SolidBrush (255,255,255,255)


Trang 20

Chuang 1- T6ng quan V~ AGG

Chimg ta th\l'c hi~n

ve

255 IAn, mBi IAn 4 lo~ pen/brush khac nhau.


Nhu v~y m6i ki~u thit co 1020 hinh (trir pattern & string). Chimg ta th\l'c hi~n
dU(Jck~t qua nhu sau :



AGG (ms)
34

106

27

313

171

184

37

55

125

137

16

15


76

55

95

64

350
300
250
200

AGG(ms)

150

GDI+(ms)

100
5

o
Draw
Fill
Rectangle Rectangle

Draw
Bezier


Path Add

Rectangle


Trang 21

Chuang 1- T6ng quan v~ AGG

140
120
100
80

AGG(ms)
GDI+(ms)

60
40
20
0
Path Add
Bezier

Gradient

Pattern

Stri g


Bi~u da tren (fa th~ hi~n tuong d6i t6c dO ella AGG. Do phfuI text AGG
sir d\lDg ham I~y duimg vian GetGlyphOutlineQ nen eh~

hon hin so vm

GDI+.

1.6.

Cac khai Di~mcO"baD

1.6.1. Anti-Aliasing va Subpixel Accuracy
Khir rang eua (anti-aliasing) la mot kY thuat tit nBi tiang dUQ'edimg d~
phat tri~n eh~t Im;mg tnre quan eua aM khi hi~n thi ehimg tren cae thiat bi cO
do phan giai th~.

No ph\l thuQc vao khil nang nhin eua con ngum

vision). Hay nhin bire aM sau day va doan xem co

y nghia gi.

Hinh 1.9 - Anh phong 100 chit "stereo"

(the human


Chuang 1 - T6ng quan


V~

Trang 22

AGG

No dll<}Cve vm ky thuat ch3ng rang Clla. Theo dinh Iy KotelnikovShannon, tAn s3 t3i da Clla anh khong VllQt qua gim h~ Shannon (Shannon
limit). Bay giG'hay nhin cimg birc 3nh co kich thuac binh thuang va
nfun trong dUng ngfr canh Clla no, chung ta d~ dang nh~

ra til

"stereo". Tuy nhien, hai birc anh la hoan toan gi3ng nhau. Anh dAu tien la


phien ban phong Ian Clla anh sau. Dac tinh nay cho phep chung ta till ~o l;;ri
thong tin bi mAt d\l'a tren kinh nghiem tich liiy la co han. CO'han no chi tID~o
hli cac chi ti~t hi mAt. Nhung vAn d~ khong chi la ch3ng rang cua. vAn d~ la
chUng ta cO tha ve nhiing d3i tu<;mgcO'sa vm do chinh xac subpixel (suhpixel
accuracy). Di~

nay dac hiet quan trQng vm do day Wc quan Clla duang

thfutg. D~u tien chUng ta hay xem ngay ca dllang thfutg du<}cve vm thuat toan
Bresenham don gian, chung ta co tha ~t k~ qua t3t hon n~u chung ta sir dl,lllg
Suhpixel Accuracy. Nhiing hirc anh sau tha hien k~t qua phong Ian Clla phep
noi suy Bresenham don gian.

(I)


(2)

(3)

Hinh 1.10 - So sanh chAt lu<;mgrender gifi'athu~t toan Bresenham thong
thuang va thuat toan Bresenham co sir d\Ulg suhpixel accuracy


Trang 23

Chuang 1 - T6ng quan v~ AGG

Hay quan sat trlrOng h<.JP(2) va (3). DuOng thfutg mau den m6ng la
nhfrng gi chung ta cful noi suy. N8u sir d\lng Subpixel Accuracy, chung ta se
that

S\l

co 2 tap pixel hi~n thj khac nhau cho diI th\lc t8 di~m dAuva di~m cuAi

cua dUOng thfutg rro vao ciIng mot pixel. Va nhfrng dUOng thfutg nay th\lc

S\l

co nhfrng dUOng ti8p tuy8n khac rna r~t quan trong. N8u chUng ta sir d\mg
Bresenham kinh di~n rna khong quan tam d8n Subpixel Accuracy, chUng ta se
th~y k8t qua (1) trong t~t ca trlrOng h<.JP.Di~u nay d~c bi~ quan trong d~ x~p
xi dUOng cong thanh nhfrng doan thfutg ng~.

Nhung n8u sir d\ll1g anti-


aliasing (chAng rang cua) cong vm subpixel accuracy, chung ta du(Yck8t qua
tAt hon nhi~u.

Hinh 1.11 - DuOng xo~ Ac

d day

co 3 duemg xo~ Ac du(,1cxftp xi tit nhfrng doan thfutg ng~ lien

ti8p nhau. DuOng ben trai sir d\ll1gBresenham sAnguyen thong thuOng khi h~
toa do du(Yclam trem d8n pixels (chUng ta se co k8t qua luong W n8u sir d\lng
Windows

GDI vi d\l nhu MoveTo/LineTo).

DuOng iJ gifra sir d\lOg

Bresenham sA nguyen co chinh sira vm do chinh xac 1/256 pixel. Con dUOng
ben phai sir d\ll1g ciIng do chinh xac 1/256 nhung cO them khir rang cua. Ghi
nh& rfutg r~t quan trong d~ co kha nang xac dinh vi tri subpixel th\lc

S\l

cua

cac phful doan thfutg. N8u chUng ta sir d\ll1g h~ toa do pixel thong thuOng vm
khir rang cua, duemg xo~
dUOngxo~


& ben trai.

Ac mu(,1fhon nhung vfut con x~u xi giAng nhu


Chuang 1 - T6ng quan v~ AGG

Trang 24

Subpixel Accuracy th?m chi con quan tr9ng han dS di~u khiSn dQ day
tr\fc quan cua duang thing. Di~u nay chi co thS n~u chung ta co thu?t tocln
khl'l"rang cua t6t. Anti-Aliasing va Subpixel Accuracy luon lam vi~c chung
v6'i nhau. HiSn thi hi~n nay (modem display) co dQ phan giai it nh~t 120 dpi,
trong khi Subpixel Accuracy th\fc S\f len d~n 300 dpi. Anh sau thS hi~n duang
thing v6'i dQrQng b~t d~u tir 0,3 pixels va tang d~n 0,3 pixel.
i

I

I
I
J
I

I

I

I


I

I

j

,

I

I

,
I

.

1
I

)
I

,,

I
,
J

,

j

Hinh 1.12 - Render duang thing v6'i Anti-Aliasing va Subpixel Accuracy

•••••••
••
•• •• •

• •••••••
•••
••••••••••• ••
••••
••••••• •••••• ••• •• •• •


••••
• • • ..o. •••••••
...."'.. -•••••••

.......
..... .
..
....
......
..•......'...




••










• •

:



e•

:

'

'0.

'

•••

.•••

••..


:.:
:.:
::


~~.
...,
.'.
'.


..... .
...

..
.,....
.- ...• s........... "'. •• • •
'.

• ..,
e ••••
• .'w
• • ••

••

".

••


.
.
. .. ..


e•••••••

:

:



;;:

::::

......,....
.'..
,.'

:

0

.'

to




••





•••••

." ••••

••
•• • •• •••••••••
• •••••••••••
••••
•• e•••••••••••••••••
•• ••••••••
••••••••••
•••••••••

Hlnh 1.13 - Render duang tron v6'i Anti-Aliasing va Subpixel Accuracy


Trang 25

Chuang 1 - TAngquan v~ AGG

Hinh 1.14 - Cae chit su til xinh x~


<:::::_---------

c:=~~

_

<:::::.:_--------c:

(

1

I

I
J

<:::.

,T

,.
-

GDI+ Quality

.AGG Quality

Hinh 1.15 - ChAt lUQ1lgrender gifra GDI+ va AGG



×