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 djOOd
bfutgAGG
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