Trong phạm vi đề tài này, với những mục đích nêu trên, chúng ta nghiên cứu cơ sở lý thuyết về Kỹ thuật đồ họa cũng như cơ sở lý thuyết về CSDL để có thể áp dụng giải quyết vấn đề một cách hiệu quả
Luận văn được xây dựng với 43 trang,chia làm 3 chương, và 5 mục .là một bài có chất lượng tốt được hội đồng bảo vệ đánh giá cao
55 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2524 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đề tài Xử lý và chọn mẫu màu cho công đoạn in thử một mẫu in hoa tại nhà máy dệt Tân Tiến, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ñaàu), coøn vuøng trong suoát seõ cho aùnh saùng ñi qua vaø lôùp keo vuøng aùnh saùng ñi qua seõ hoùa cöùng baùm chaët vaøo löôùi phaúng. Sau ñoù röûa löôùi phaúng qua nöôùc vuøng keo chöa hoùa cöùng seõ troâi ñi, nhö vaäp taám khung löôùi phaúng seõ trôû thaønh moät aâm baûn cuûa Film slide.
Khuoân löôùi phaúng sau ñoù ñöôïc chuyeån cho Nhaân vieân phoøng thí nghieäm tieán haønh choïn maøu cho maãu hoa (coâng vieäc naøy maát raát nhieàu thôøi gian, ñoøi hoûi söï nhaïy caûm maøu saéc cuûa ngöôøi thöïc hieän choïn maøu in thöû vaø tieâu toán löôïng vaûi in thöû khoâng nhoû). Moät toå hôïp 6 maøu treân taïo thaønh moät Maãu in goïi laø Colorway, moãi maãu hoa coù theå laøm thaønh nhieàu Colorway cho khaùch haøng löïa choïn. (Taát caû caùc coâng ñoaïn in thöû phaûi ñaûm baûo quy trình coâng ngheä nhö in chính thöùc – bao goàm : in, haáp, giaët taåy ñeå ñaûm baûo söï ñoàng ñeàu maøu saéc giöõa in thöû vaø in chính thöùc sau naøy).
Sau khi choïn maøu vaø in thöû xong maãu hoa treân, maãu hoa ñöôïc gôûi cho khaùch haøng löïa choïn, neáu khaùch haøng ñoàng yù thì nhaø maùy cho tieán haønh saûn xuaát haøng loaït, neáu khoâng coù theå phaûi tieán haønh choïn laïi maøu.
Treân ñaây toâi xin giôùi thieäu sô veà baøi toaùn vaø vaán ñeà caàn giaûi quyeát ôû ñaây laø vieäc ñöa caùc lôùp phim (Layer slide) vaøo maùy tính sao cho caùc baûn layer truøng khít leân nhau vaø tieán haønh choïn maøu treân töøng lôùp ñeå choïn maøu öng yù nhaát. Töø caùc maøu ñaõ ñöôïc choïn maùy tính tìm trong cô sôû döõ lieäu veà maøu saéc vaø ñöa ra caùc thaønh phaàn thuoác nhuoäm caàn thieát taïo neân maøu ñaõ choïn. (trong thöïc teá, nhaø maùy ñaõ tìm hieåu daây chuyeàn coâng ngheä ñöôïc tin hoïc hoùa cuûa Haõng Stock Brabant - Haø Lan tuy nhieân do giaù thaønh quaù ñaét neân chöa theå nhaäp ñöôïc daây chuyeàn treân) vì vaäy toâi chæ mong muoán goùp moät phaàn nhoû trong vieäc hôïp lyù hoùa quaù trình saûn xuaát cuûa nhaø maùy.
PHAÀN II : CAÙC PHEÙP BIEÁN ÑOÅI ÑEÅ CAÙC LÔÙP FILM TRUØNG KHÍT NHAU
I. Caùc khaùi nieäm toång quan cuûa kyõ thuaät ñoà hoaï maùy tính (Computer Graphics):
Kyõ thuaät ñoà hoaï maùy tính :
Kyõ thuaät ñoà hoaï maùy tính coù theå ñònh nghóa nhö moät lónh vöïc cuûa coâng ngheä thoâng tin maø ôû ñoù nghieân cöùu, xaây döïng vaø taäp hôïp caùc coâng cuï (moâ hình lyù thuyeát vaø phaàn meàm) khaùc nhau ñeå kieán taïo, xaây döïng, löu tröõ vaø xöû lyù caùc moâ hình (model) vaø hình aûnh (image) cuûa ñoái töôïng, söï vaät hieän töôïng khaùc nhau trong cuoäc soáng, saûn xuaát vaø nghieân cöùu. Caùc moâ hình vaø hình aûnh naøy coù theå laø caùc keát quaû thu ñöôïc töø nhöõng lónh vöïc khaùc nhau cuûa raát nhieàu ngaønh khoa hoïc (Vaät lyù, toaùn hoïc, thieân vaên hoïc v..v) vaø bao truøm raát nhieàu theå loaïi vaø daïng phong phuù .
Caùc kyõ thuaät ñoà hoaï :
Ngaøy nay soá löôïng caùc heä thoáng söû duïng kyõ thuaät ñoà hoaï töông taùc ñaõ trôû neân raát lôùn, ngaøy caøng nhieàu vaø caøng trôû neân ña daïng hôn, phong phuù hôn. Tuy vaäy caên cöù vaøo phöông phaùp xöû lyù caùc döõ lieäu trong heä thoáng maø ngöôøi ta phaân bieät ra hai heä thoáng ñoà hoaï : Kyõ thuaät ñoà hoaï ñieåm (Sampled – Based Graphics) vaø Kyõ thuaät ñoà hoaï vectô (Geometry – Based Graphics).
Kyõ thuaät ñoà hoaï ñieåm :
Nguyeân lyù xaây döïng caùc moâ hình vaø hình aûnh trong kyõ thuaät ñoà hoaï ñieåm nhö sau : caùc moâ hình, hình aûnh cuûa caùc ñoái töôïng ñöôïc hieän thò thoâng qua töøng pixel (Töøng maãu rôøi raïc). Trong kyõ thuaät naøy chuùng ta coù theå taïo ra, thay ñoåi thuoäc tính, xoaù ñi töøng pixel cuûa moâ hình vaø hình aûnh caùc ñoái töôïng. Caùc moâ hình hình aûnh ñöôïc hieån thò nhö moät löôùi ñieåm (grid) caùc pixel rôøi raïc, töøng pixel ñeàu coù vò trí xaùc ñònh, ñöôïc hieån thò vôùi moät giaù trò rôøi raïc (soá nguyeân) caùc thoâng soá hieån thò ví duï nhö maøu saéc hoaëc ñoä saùng. Taäp hôïp taát caû caùc pixel cuûa grid cho chuùng ta moâ hình, hình aûnh ñoái töôïng maø chuùng ta muoán hieån thò ñeå nghieân cöùu hoaëc xaây döïng neân.
Coù hai phöông phaùp ñeå taïo ra caùc pixel naøy :
Phöông phaùp thöù nhaát laø duøng phaàn meàm ñeå veõ tröïc tieáp töøng pixel moät, döïa treân caùc lyù thuyeát moâ phoûng ñeå xaây döïng neân caùc ñoái töôïng hoaëc hình aûnh thöïc cuûa söï vaät.
Phöông phaùp thöù hai laø rôøi raïc hoaù (soá hoaù ) hình aûnh thöïc cuûa ñoái töôïng sau ñoù ta coù theå söûa ñoåi (image editing) hoaëc xöû lyù (image processing) maûng caùc pixel thu ñöôïc theo phöông phaùp khaùc nhau ñeå thu ñöôïc hình aûnh ñaëc tröng cuûa ñoái töôïng.
Kyõ thuaät ñoà hoaï vectô :
Nguyeân lyù xaây döïng caùc moâ hình vaø hình aûnh trong kyõ thuaät ñoà hoaï vector nhö sau : tröôùc heát ngöôøi ta xaây döïng moâ hình hình hoïc (Geometrical model) cho moâ hình hoaëc hình aûnh cuûa ñoái töôïng, xaùc ñònh thuoäc tính cuûa moâ hình hình hoïc naøy, sau ñoù döïa treân moâ hình hình hoïc naøy seõ thöïc hieän qua trình toâ traùt (rendering) ñeå hieån thò töøng ñieåm cuûa moâ hình, hình aûnh thöïc cuûa ñoái töôïng. ÔÛ kyõ thuaät ñoà hoaï naøy chuùng ta chæ löu tröõ moâ taû toaùn hoïc cuûa caùc thaønh phaàn trong moâ hình hình hoïc cuøng vôùi caùc thuoäc tính töông öùng cuûa noù maø khoâng löu laïi toaøn boä pixel cuûa hình aûnh toâ traùt (rendering) ñöôïc .
Caùc thaønh phaàn naøy ñöôïc moâ taû trong moâ hình hình hoïc cuûa ñoái töôïng ñöôïc goïi laø thöïc theå cô sôû hình hoïc cuûa moâ hình hình hoïc. Sau ñoù hình aûnh seõ ñöôïc xaây döïng töø caùc thaønh phaàn cuûa moâ hình hình hoïc, töùc laø chuùng ta seõ thöïc hieän quaù trình toâ traùt theo ñieåm nhöng nhöõng pixel naøy khoâng ñöôïc löu giöõ laïi nhö moät phaàn cuûa moâ hình. Nhö theá hình aûnh coù theå ñöôïc toâ traùt (rndering) töø nhieàu ñieåm nhìn vaø goùc nhìn khaùc nhau döïa treân cuøng moät moâ hình maãu.
So saùnh kyõ thuaät ñoà hoaï ñieåm vaø kyõ thuaät ñoà hoaï vectô :
Trong kyõ thuaät ñoà hoaï ñieåm, hình aûnh vaø moâ hình cuûa caùc vaät theå ñöôïc ñònh nghóa bôûi caùc ñieåm cuûa grid, khi ñoù chuùng ta coù theå deã daøng thay ñoåi thuoäc tính cuûa caùc ñieåm ñeå thay ñoåi töøng phaàn hoaïc töøng vuøng cuûa hình aûnh.
Trong kyõ thuaät ñoà hoaï ñieåm chuùng ta coù theå deã daøng copy ñöôïc caùc pixel töø moät hình aûnh naøy sang hình aûnh khaùc.
Trong kyõ thuaät ñoà hoaï vector chuùng ta khoâng thay ñoåi thuoäc tính cuûa töøng ñieåm tröïc tieáp maø ta coù theå xöû lyù vôùi töøng thaønh phaàn hình hoäc cô sôû cuûa noù, sau ñoù laïi thöïc hieän quaù trình toâ traùt vaø hieån thò.
Trong kyõ thuaät ñoà hoaï vector chuùng ta coù theå quan saùt hình aûnh vaø moâ hình cuûa hình aûnh vaø söï vaät ôû nhieàu goùc ñoä khaùc nhau moät caùch deã daøng baèng caùch thay ñoåi ñieåm nhìn vaø goùc nhìn.
II. Pheùp bieán ñoåi ñeå caùc lôùp Film truøng khít :
Taïo lôùp phim (Layer slide) :
Nhö giôùi thieäu treân, töø maãu hoa ñöôïc thieát keá caàn phaûi taùch thaønh caùc lôùp phim theo töøng maøu cuûa maãu thieát keá
Ví duï :
Film Slide
Ñeå ñöa ñöôïc taám Film Slide vaøo maùy tính ta söû duïng maùy queùt (Scan) queùt film vaøo maùy döôùi daïng file traéng ñen (.Wmf, .BMP, JPEG,…) sau ñoù ñöa vaøo chöông trình xöû lyù . ÔÛ ñaây ñeå taïo thaønh töøng lôùp Slide trong chöông trình, moãi moät Slide ñöôïc queùt vaøo ta vieát thuû tuïc queùt ñieåm aûnh, neáu ñieåm aûnh maøu ñen löu toïa ñoä vaøo maûng 2 chieàu . Caáu truùc maûng 2 chieàu nhö sau :
Dim A() as Integer (maûng ñoäng)
Soá phaàn töû
Rap1 X
Rap2 X
X1
X2
………
Xn-1
Xn
Lôùp
Rap1 Y
Rap2 Y
Y1
Y2
………
Yn-1
Yn
Trong ñoù :
- Soá phaàn töû : Laø toång soá phaàn töû (n+3) caàn löu cuûa maûng.
- Lôùp : Lôùp Slide.
- Rap1 X, Rap1 Y : Ñieåm Rappo thöù 1 treân taám Slide (Ngöôøi söû duïng
chöông trình choïn)
- Rap2 X, Rap2 Y : Ñieåm Rappo thöù 2 treân taám Slide (Ngöôøi söû duïng
chöông trình choïn)
- (X1,Y1), (X2,Y2) … (Xn,Yn) : Toïa ñoä ñieåm aûnh Slide.
Ñieåm Rappo1 vaø Rappo2 duøng ñeå laøm chuaån ñieàu chænh ñeå caùc lôùp truøng khít hoïa tieát vôùi nhau.
Caùc pheùp toaùn ñieàu chænh truøng khít caùc lôùp Slide :
Caùc ñoái töôïng phaúng trong toïa ñoä 2 chieàu ñöôïc moâ taû nhö taäp caùc ñieåm phaúng. Caùc ñieåm ñöôïc bieåu dieãn thoâng qua toïa ñoä cuûa chuùng vieát döôùi daïng ma traän hay coøn goïi laø caùc vector vò trí. Coù 2 phöông phaùp bieåu dieãn caùc ma traän maø pheùp bieán ñoåi ñoà hoaï treân ñoù laø nhö nhau bao goàm phöông phaùp bieåu dieãn toïa ñoä theo ma traän 1 haøng 2 coät vaø ma traän 2 haøng 1 coät. Trong phaàn naøy chuùng ta seõ bieåu dieãn toaï ñoä theo ma traän haøng ñeå moâ taû toïa ñoä caùc ñieåm.
x
y vaø [ x y ]
Taäp caùc ñieåm ñöôïc löu tröõ trong maùy tính döôùi daïng caùc ma traän hay chuoãi ñieåm maø vò trí cuûa chuùng quyeát ñònh hình daïng cuûa ñöôøng thaúng, ñöôøng cong hay aûnh seõ deã daøng kieåm soaùt thoâng qua caùc pheùp bieán ñoåi. Pheùp bieán ñoåi ñoà hoaï ñöôïc moâ taû döôùi daïng caùc ma traän töông öùng cho pheùp theå hieän caùc söï bieán ñoåi toaï ñoä cuûa caùc ñieåm qua caùc pheùp toaùn nhaân ma traän. Ñieàu ñoù taïo thuaän lôïi cho ngöôøi söû duïng hình dung cuõng nhö thao taùc vôùi caùc ñoái töôïng hình hoïc moät caùch deã daøng vaø ñoù cuõng laø moät trong nhöõng tính naêng maïnh cuûa ñoà hoaï maùy tính.
Pheùp bieán ñoåi vò trí ñieåm :
Giaû söû ta coù ñieåm P(x,y) trong maët phaúng vôùi [ x y ] laø vecto vò trí ñöôïc kyù hieäu baèng [X] vaø ma traän 2x2 [T] laø ma traän bieán ñoåi vôùi
Ñieåm P’ qua pheùp bieán ñoåi coù giaù trò { x’ y’ ] vôùi phöông trình sau :
Theo phöông trình treân giaù trò töông öùng cuûa x’ = ax + cy vaø y’ = bx + dy, khaûo saùt ma traän bieán ñoåi [T] vôùi caùc tham soá ta coù :
Pheùp bieán ñoåi baát bieán :
Vôùi pheùp bieán ñoåi tònh tieán thì a = d = 1 vaø b = c = 0 khi ñoù ma traän bieán ñoåi
coù daïng :
Khi ñoù ñieåm P’ qua pheùp bieán ñoåi tònh tieán coù giaù trò [ x’ y’ ] vôùi phöông trình sau :
Vôùi pheùp bieán ñoåi treân ta coù :
x’ = x + dx
y’ = y + dy
Trong ñoù : - dx heä soá tònh tieán theo x
- dy heä soá tònh tieán theo y
Pheùp bieán ñoåi tyû leä :
Xeùt tröôøng hôïp d = 1 vaø b = c = 0 phöông trình ñöôïc vieát laïi :
Vôùi keát quaû thu ñöôïc x’= ax vaø yù = y, ñieåm P’ dòch chuyeån theo truïc x vôùi tyû leä a xaùc ñònh.
P
P’
P’
P
0 1 2 3 0 1 2 3 x,x’
Vôùi tröôøng hôïp b = c = 0 vaø a, d laø caùc giaù trò baát kyø thì phöông trình seõ môû roäng vaø thu ñöôïc
Pheùp bieán ñoåi tæ leä ñöôïc thöïc hieän treân caû hai truïc toïa ñoä x vaø y. Neáu x # y thì tyû leä treân hai truïc khoâng baèng nhau. Neáu a = d > 1 thì pheùp bieán ñoåi thu ñöôïc laø pheùp phoùng to vaø ngöôïc laïi vôùi 0 < a = d < 1 thì pheùp bieán ñoåi töông öùng laø thu nhoû.
Neáu moät trong hai giaù trò a hoaëc d = 1 ta seõ coù pheùp laáy ñoái xöùng treân caùc truïc töông öùng, vaø khi caû hai a vaø d ñeáu baèng –1 thì pheùp bieán ñoåi thu ñöôïc seõ laø pheùp laáy ñoái xöùng qua goác toïa ñoä.
Pheùp bieán daïng :
Khi a vaø d = 1 baát bieán thì toïa ñoä cuûa P’ phuï thuoäc vaøo söï thay ñoåi cuûa b vaø c, Giaû söû vôùi c = 0.
Ta coù :
Ñieåm P’ thu ñöôïc seõ khoâng thay ñoåi giaù trò toïa ñoä x coøn giaù trò yù bieán ñoåi khoâng chæ theo b maø coøn phuï thuoäc vaøo caû x. Vaø ñieàu ñoù ngöôïc laïi khi chuùng ta thay ñoåi vôùi a = d = 1; b= 0; hieäu öùng bieán daïng seõ xaûy ra theo truïc y.
Ñieåm goác toïa ñoä seõ baát bieán qua moïi pheùp bieán ñoåi. Ñieàu ñoù ñöôïc chöùng minh qua phöông trình sau vôùi ñieåm P = [0 0] truøng vôùi goác toïa ñoä.
P’
x’ = cy + x
Y=bx+y
Cy
P
P’
P
bx
0 1 2 3 0 1 2 3
Pheùp bieán daïng theo truïc y Pheùp bieán daïng theo truïc x
Pheùp bieán ñoåi toång hôïp :
Phöông phaùp bieán ñoåi söû duïng pheùp nhaân ma traän vôùi toïa ñoä ñieåm thoâng qua caùc vectô vò trí thaät söï hieäu quaû vaø ñem laïi coâng cuï vaø ñem laïi coâng cuï maïnh veà ñoà hoïa cho ngöôøi söû duïng. Tuy nhieân nhöõng thao taùc thöôøng caàn khoâng chæ moät maø raát nhieàu caùc pheùp bieán ñoåi khaùc nhau. Pheùp hoaùn vò khi nhaân ma traän khoâng ñöôïc cho pheùp thöïc hieän nhöng khaû naêng toå hôïp caùc pheùp nhaân laïi cho pheùp taïo ra moät ma traän bieán ñoåi duy nhaát. Ñieàu ñoù laøm giaûm bôùt ñöôïc khoái löôïng ñaùng keå caùc pheùp tính toaùn trong quaù trình bieán ñoåi, laøm taêng toác ñaùng keå caùc chöông trình öùng duïng vaø taïo ñieàu kieän cho vieäc quaûn lyù caùc bieán ñoåi trong öùng duïng.
Giaû söû ta coù ñieåm P vôùi toïa ñoä [X] = [x y] vaø 2 pheùp bieán ñoåi laø [T1], [T2] vôùi
Quay ñieåm P quanh goác toïa ñoä moät goùc 900 vaø
Laáy ñoái xöùng qua goác toïa ñoä
Ta coù :
Laø toïa ñoä [X’] cuûa P’ qua pheùp bieán ñoåi [T1] vaø
Laø toïa ñoä cuûa P’ qua [T2]
Giaû söû ta coù [T3] laø ma traän bieán ñoåi toång hôïp cuûa hai ma traän [T1] vaø [T2], giaù trò sau khi bieán ñoåi [x y] qua [T3] thu ñöôïc coù daïng :
Ñieàu ñoù ñuùng vôùi moïi pheùp bieán ñoåi [T1] vaø [T2] chuùng ta coù theå noùi vieäc bieán ñoåi qua nhieàu ma traän thaønh phaàn seõ töông ñöông vôùi pheùp bieán ñoåi qua ma traän toång hôïp töø caùc pheùp bieán ñoåi ñoù.
Pheùp Quay :
Giaû söû ta coù ñieåm P vôùi toïa ñoä ban ñaàu laø (x, y) hay töông öùng vôùi ma traän [ x y ] qua phöông phaùp bieåu dieãn vector ( hình döôùi ) laøm thaønh vôùi truïc X moät goùc a. Cho P quay quanh goác toïa ñoä O moät goùc b coù baùn kính töông öùng laø r thu ñöôïc ñieåm P’. Qua hình veõ giaù trò P vaø P’ coù daïng :
P = [ x y ] = [ r.cosa r.sina] (1)
P’ = [ x’ y’ ] = [ r.cos(a+b) r.sin(a+b)] (2)
Phöông trình (2) qua pheùp bieán ñoåi löôïng giaùc ñöôïc ñöa veà daïng :
P’ = [ x’ y’ ] = [ r(cosa. cosb - sina.sinb) r(cosa. sinb + sina.cosb)] (3)
Töø (1) vaø (3) ta coù :
P’ = [ x’ y’ ] = [x. cosb - y.sinb x.sinb + y.cosb]
Hay töông ñöông vôùi :
X’ = x. cosb - y.sinb
Y’ = x.sinb + y.cosb
Pheùp bieán ñoåi thoâng qua caùch vieát ma traän coù daïng sau :
[X’] = [X].[T] = [x’ y’]
= [x y].[x. cosb - y.sinb x.sinb + y.cosb]
Nhö vaäy ma traän bieán ñoåi toång quaùt [T] khi quay moät ñieåm quanh goác toïa ñoä döôùi moät goùc a baät kyø coù daïng :
Giaù trò döông thu ñöôïc khi goùc quay ngöôïc chieàu kim ñoàng hoà. Giaû söû khi quay P moät goùc -a thì ma traän [T] coù theå tính ñöôïc nhö sau :
Töø caùc pheùp bieán ñoåi treân ñöa vaøo baøi toaùn ñang xaây döïng ta caàn choïn treân moãi taám Film Slide hai ñieåm chuaån (Rappo1 vaø Rappo2), sau ñoù ta choïn taám Film Slide ñaàu tieân (Goïi laø lôùp 0) hai ñieåm chuaån ñaùnh daáu “+” sau ñoù taát caû caùc taám Film Slide sau cuõng ñeàu ñaùnh daáu “+” truøng vôùi taám ñaàu tieân.
Nhö vaäy sau khi queùt vaøo maùy nhieäm vuï cuûa ta laø phaûi duøng 2 pheùp bieán ñoåi treân ñeå ñöa caùc ñieåm Rappo cuûa caùc taám Film Slide sau (Töø lôùp 1 trôû ñi) truøng vôùi 2 ñieåm Rappo cuûa lôùp 0 : baèng caùch dòch ñieåm Rappo1 cuûa caùc lôùp 1,2, … truøng vôùi ñieåm rappo1 cuûa lôùp 0, sau ñoù xoay ñieåm Rappo2 quanh ñieåm Rappo1 ñeå truøng vôùi ñieåm Rappo2 cuûa lôùp 0 nhö vaäy ta ñöôïc caùc taám Film Slide truøng khít leân nhau.
PHAÀN III : TÌM HIEÅU MOÄT SOÁ FILE AÛNH VAØ HEÄ MAØU
I. Tìm hieåu moät soá File aûnh :
File aûnh PCX :
Caáu truùc cuûa PCX Header :
Coù chieàu daøi laø 128 bytes.
Header ñöôïc chia laøm 3 vuøng :
Vuøng 1 : caùc thoâng tin chính bao goàm password, version, kieåu neùn, soá bits löu tröõ moãi pixel, kích thöôùc aûnh, ñoä phaân giaûi ngang, doïc.
Vuøng 2 : Caùc thoâng tin veà Palette.
Vuøng 3 : Caùc thoâng tin phuï trôï bao goàm : video mode, soá planes maøu, soá bytes moãi doøng queùt, kieåu Palette…
Noäi dung Header ñöôïc moâ taû chi tieát sau :
Byte#
Kích thöôùc
Data
0
1
Password
1
1
Version
2
1
Encode
3
1
Bits per pixel
4
8
Window
12
2
Hres
14
2
Vres
16
48
Palette
64
1
Video mode
65
1
Num of planes
66
2
Bytes per line
68
2
Palette info
70
58
Unuser
Caùc thoâng tin chính :
Password = A0h : daïng taäp tin PCX.
Version : coù caùc giaù trò :
0 : version 2.5
2 : version 2.8 ( coù Palette)
3 : Version 2.8 ( khoâng coù Palette)
4 : PC Paintbrush for Windows
5 : version 3.0 hay lôùn hôn.
Encode = 1 (run – length) : maõ daïng taäp tin PCX thoâng thöôøng.
Bits per pixel : soá bit daønh cho moät pixel treân moät plane.
Ñoái vôùi aûnh VGA 16 maøu, 4 planes, moät pixel aûnh caàn 4 bit vaø moät bit treân moät plane thì bits per pixel = 4.
Ñoái vôùi aûnh VGA 256 maøu, 1 planes, moät pixel caàn 8 bit thì bits per pixel = 8. Windows laø moät boä boán (x1, y1, x2, y2) xaùc ñònh toïa ñoä goùc traùi beân treân vaø goùc phaûi beân döôùi cuûa cöûa soå hình chöõ nhaät treân maøn hình maø aûnh hieän leân, Window xaùc ñònh kích thöôùc cuûa aûnh. Ñoái vôùi taäp tin PCX, (x1, y1) laø goùc traùi beân treân maøn hình (x1 = y1 = 0) vaø (x2 = xmax, y2 = ymax) laø goùc phaûi beân döôùi tuøy theo mode maøn hình.
Hres, Vres : ñoä phaân giaûi ngang, doïc cuûa maøn hình.
Caùc thoâng tin phuï trôï :
Video mode : vuøng naøy thöôøng ñöôïc boû qua vaø coù giaù trò 0.
Num of planes : laø soá planes caàn thieát ñeå löu tröõ 1 pixel. Thöôøng soá planes baèng soá bit caàn thieát ñeå löu tröõ 1 pixel.
Ñeå bieát giaù trò cuûa moät pixel thì phaûi ñoïc ñoàng thôøi treân taát caû caùc planes, do ñoù toác ñoä bung aûnh seõ chaäm. Giaù trò cuûa num of planes lieân quan ñeán giaù trò löu taïi bits per pixel.
Bytes per line : laø soá byte caàn thieát cho moät doøng queùt treân maøn hình cho 1 plane.
Vôùi PCX, BytesPerLine = (Hres * BitsPerPixel) / 8.
Vôùi ñoä phaân giaûi 640 * 480 : BitsPerPixel = 1, BytesPerLine = 80.
Palette info : cho bieát aûnh thuoäc loaïi maøu (color / mono)
Unused : laø vuøng khoâng duøng ñeán.
Vuøng döõ lieäu :
Döõ lieäu aûnh ñöôïc saép xeáp thöù töï töø traùi qua phaûi vaø töø treân xuoáng döôùi. Moãi doøng queùt aûnh ñöôïc maõ hoùa rieâng theo giaûi thuaät run-length. Döõ lieäu aûnh mono ñöôïc höu nhö bitmaps.
Baûng maøu :
Baûng maøu coù kích thöôùc 769 bytes. Baûng maøu laø nôi löu tröõ caùc phaàn cô baûn taïo neân maøu cuûa caùc pixel ñöôïc löu tröõ trong vuøng söï lieän. Tyû leä caùc thaønh phaàn cô baûn (red, green, blue) khaùc nhau sex taïo neân maøu khaùc nhau. Do ñoù, tyû leä naøy caàn löu tröõ trong header ñoàng thôøi vôùi vieäc löu tröõ ñeå hình aûnh ñöôïc trung thöïc khi hieän leân maøn hình maùy tính.
Thöôøng vôùi mode EGA / VGA coù 16 thanh ghi Palette neân vuøng löu tröõ thoâng tin veà baûng maøu ôû header goàm 16 * 3 = 48 bytes.
Moãi thanh ghi Palette töông öùng vôùi moät boä phaän 3 thaønh phaàn maøu cô baûn töông öùng vôùi maøu chæ ra bôûi Palette ôû hình döôùi :
…
Red
Green
Blue
…
Baûng maøu
Do ñoù, tröôùc khi hieån thò, thoâng tin veà baûng maøu caàn ñöôïc naïp trôû laïi caùc thanh ghi Palette trong adaptor maøn hình.
File aûnh TIFF :
File aûnh Tiff ñöôïc thieát keá laøm giaûm nheï bôùt caùc vaán ñeà lieân quan ñeán vieäc môû roäng file aûnh coá ñònh, veà caáu truùc noù cuõng goàm ba phaàn chính :
Phaàn Header (IFH) : coù trong taát caû caùc file Tiff :
1 word : chæ ra kieåu söû duïng ñeå taïo file do maùy PC hay Macintosh, hai loaïi naøy raát khaùc nhau ôû thöù töï caùc bytes löu tröõ trong caùc soá daøi 2 hay 4 bytes.
2 word : version. Töø luoân coù giaù trò laø 42. Coù theå coi laø ñaëc tröng cuûa file Tiff vì noù khoâng thay ñoåi.
3 word : giaù trò Offset tính theo byte tính töø ñaàu file tôùi caáu truùc IFD (Image File Directory) laø caáu truùc thöù hai cuûa file. Thöù töï caùc bytes ôû ñaây phuï thuoäc vaøo daáu hieäu tröôøng ñaàu tieân.
Phaàn thöù 2 (IFD) : noù khoâng ôû ngay sau IFH maø vò trí noù ñöôïc xaùc ñònh bôûi tröôøng Offset trong ñaàu file. Coù theå coù moät hay nhieàu IFH cuøng toàn taïi trong file (neáu file coù nhieàu hôn moät aûnh). Phaàn naøy bao goàm :
2 bytes : chöùa caùc DE (Directory Entry)
12 bytes : laø caùc DE xeáp lieân tieáp. Moãi DE chieám 12 bytes.
4 bytes : Offset troû tôùi IFD tieáp theo. Neáu ñaây laø IFD cuoái cuøng thì tröôøng naøy baèng 0.
Phaàn thöù 3 : caùc DE
Caùc DE coù ñoä daøi coá ñònh laø 12 bytes vaø chia laøm boán phaàn :
2 bytes : chæ ra daáu hieäu maø file aûnh ñaõ ñöôïc xaây döïng.
2 bytes : kieåu döõ lieäu tham soá aûnh. Coù 5 kieåu cô baûn :
1 : BYTES (1 byte)
2 : ASCII (1 byte)
3 : SHORT (2 byte)
4 : LONG (4 byte)
5 : RATIONAL (8 byte)
4 bytes : tröôøng ñoä daøi (boä ñeám) chöùa soá löôïng chæ muïc tieâu cuûa döõ lieäu ñaõ ñöôïc chæ ra. Noù khoâng phaûi toång soá bytes caàn thieát ñeå löu tröõ. Ñeå coù soá lieäu naøy ta caàn nhaân chæ soá muïc vôùi kieåu döõ lieäu ñaõ duøng.
4 bytes : ñoù laø Offset tôùi ñieåm baét ñaàu döõ lieäu thöïc lieân quan vôùi DE khoâng phaûi löu tröõ vaät lyù cuøng vôùi noù naèm ôû 1 vò trí naøo ñoù trong file.
Döõ lieäu ñöôïc chöùa trong file thöôøng ñöôïc toå chöùc thaønh caùc nhoùm doøng (coät) queùt cuûa döõ lieäu aûnh. Caùch toå chöùc naøy laøm giaûm boä nhôù caàn thieát cho vieäc ñoïc file. Vieäc giaûi neùn thöïc hieän theo 4 kieåu khaùc nhau ñöôïc löu tröõ trong daáu hieäu neùn.
Nhö ñaõ noùi treân, file aûnh TIFF duøng ñeå giaûi quyeát vaán ñeà khoù môû roäng cuûa file PCX. Tuy nhieân, vôùi cuøng moät aûnh thì vieäc duøng file PCX chieám ít khoâng gian nhôù hôn.
File aûnh BMP :
Caáu truùc file aûnh BMP bao goàm caùc phaàn chính sau :
BMP Header : ñöôïc moâ taû nhö sau :
Byte#
Data
Chi tieát
1 – 2
Daáu nhaän daïng
‘BM’
3 – 6
Kích thöôùc file
2 words
7 – 10
Daønh rieâng
Thöôøng laø 0
11 – 14
Offset ñeán Bitmap Data
Tính töø ñaàu file
Bitmap Info : ñöôïc moâ taû nhö sau :
Byte#
Data
Chi tieát
1 – 4
Soá byte trong Header
Thöôøng laø 40 bytes
5 – 8
Chieàu roäng cuûa bitmap
Baèng pixel
9 – 12
Chieàu cao cuûa bitmap
Baèng pixel
13 – 14
Soá planes maøu
Thöôøng laø 1
15 – 16
Soá bit treân pixel
17 – 20
Daïng neùn
21 – 24
Kích thöôùc aûnh
Baèng bytes
25 – 28
Ñoä phaân giaûi ngang
Baèng pixels / meùt
29 – 32
Ñoä phaân giaûi doïc
Baèng pixels / meùt
33 – 36
Soá maøu duøng cho bitmap
Thöôøng laø 0 (taát caû)
37 – 40
Soá maøu quan troïng
Thöôøng laø 0 (taát caû)
Daïng neùn : 0 : khoâng neùn
1 : run – length (8 bits / pixel)
2 : run – length (4 bits / pixel)
Color map : moãi phaàn töû maøu goàm 4 bytes :
…
Red
Green
Blue
Reserved
…
Bitmap Data : caùc pixels ñöôïc löu tröõ theo haøng, töø traùi sang phaûi cho moãi doøng, caùc haøng ñöôïc löu tröõ töø döôùi leân treân. Nhö vaäy, bitmap seõ ñöôïc theå hieän töø goùc döôùi traùi.
II. Tìm hieåu veà heä maøu :
Maøu saéc ñoái töôïng maø chuùng ta quan saùt ñöôïc khoâng chæ phuï thuoäc vaøo baûn thaân cuûa ñoái töôïng maø coøn phuï thuoäc vaøo nguoàn saùng, moâi tröôøng xung quanh ñoái töôïng cuõng nhö heä thoáng caûm nhaän cuûa con ngöôøi. Moät soá caùc ñoái töôïng phaûn xaï laïi caùc tia chieáu leân chuùng (nhö töôøng, giaáy, kim loaïi) trong khi moät soá khaùc cho aùnh saùng ñi xuyeân qua (nhö maøng moûng, kính…). Khi moät beà maët chæ phaûn xaï caùc tia saùng xanh döông ñöôïc chieáu bôûi moät nguoàn saùng ñoû thí noù coù maøu ñen, töông töï khi aùnh saùng maøu luïc ñöôïc nhìn qua moät taám kính chæ cho tia saùng ñoû ñi qua noù cuõng coù maøu ñen.
Giaùc quan thò giaùc cuûa con ngöôøi caûm nhaän ñöôïc caùc vaät xung quanh thoâng qua caùc tia saùng maàu toát hôn raát nhieàu so vôùi caùc vaät chæ coù hai maøu ñen traéng. Vì vaäy trong kyõ thuaät ñoà hoaï vieäc xaây döïng neân caùc ñoái töôïng maøu laø nhöõng lyù thuyeát cô baûn maø neàn taûng cô sôû laø lyù thuyeát veà maøu saéc.
Moâ hình maøu laø moät chæ soá kyõ thuaät cuûa moät heä toaï ñoä maøu ba chieàu vaø taäp caùc maøu nhoû thaønh phaàn coù theå troâng thaáy ñöôïc trong heä thoáng toïa ñoä maøu thuoäc moät gam maøu ñaëc tröng. Ví duï nhö moâ hình maøu RGB(Red, Green, Blue) laø moät taäp caùc maøu thaønh phaàn saép xeáp theo hình laäp phöông cuûa heä truïc toaï ñoä Ñeà caùc.
Moâ hình maøu RGB (RED-GREEN-BLUE): ÑOÛ-LUÏC-LAM :
Maøu ñoû, luïc : Xanh laù caây, lam : Xanh da trôøi (RGB) ñöôïc söû duïng roäng raõi treân maøn hình CRT vaø caùc loaïi maøn hình coù ñoà hoaï Raster maøu döïa vaøo heä toaï ñoä Ñeà caùc.
Gam maøu ñöôïc theå hieän trong heä maøu RGB ñöôïc xaùc ñònh baèng nhöõng ñaëc tính cuûa hieän töôïng phaùt quang cuûa caùc chaát phoát pho trong maøn hình CRT. Hai maøn hình CRT vôùi 2 loaïi chaát phoát pho khaùc nhau seõ cho ra caùc gam maøu khaùc nhau. Söï bieán ñoåi maøu ñöôïc ñònh roõ trong gam maøu cuûa moät CRT so vôùi gam maøu cuûa moät CRT khaùc.
Moâ hình maøu CMY (CYAN, MAGENTA, YELLOW) Xanh tím, ñoû töôi, vaøng :
Laø phaàn buø töông öùng cho caùc maøu ñoû, luïc, lam vaø chuùng ñöôïc söû duïng nhö nhöõng boä loïc loaïi tröø caùc maøu naøy töø aùnh saùng traéng. Vì vaäy CMY coøn ñöôïc goïi laø caùc phaàn buø loaïi tröø cuûa maøu goác. Taäp hôïp maøu thaønh phaàn bieåu dieãn trong heä toaï ñoä Ñeà caùc cho moâ hình maøu CMY cuõng gioáng nhö cho moâ hình maøu RGB ngoaïi tröø maøu traéng (aùnh saùng traéng) ñöôïc thay theá maøu ñen (Khoâng coù aùnh saùng) ôû taïi nguoàn saùng. Caùc maøu thöôøng ñöôïc taïo thaønh baèng caùch loaïi boû hoaëc ñöôïc buø töø aùnh saùng traéng hôn laø ñöôïc theâm vaøo nhöõng maøu toái.
Moâ hình maøu YIQ
Moâ hình maøu YIQ laø moâ hình maøu ñöôïc öùng duïng trong truyeàn hình maøu baêng taàn roäng taïi Myõ, vaø do ñoù noù coù moái quan heä chaëc cheõ vôùi maøn hình ñoà hoaï maøu Raster. YIQ laø söï thay ñoåi cuûa RGB cho khaû naêng truyeàn phaùt vaø tính töông thích vôùi ti vi ñen traéng theá heä tröôùc. Tín hieäu truyeàn söû duïng trong heä thoáng NTSC (National Television System Committee).
Thaønh phaàn Y cuûa YIQ khoâng phaûi laø maøu vaøng maø laø theå saùng vaø ñöôïc xaùc ñònh gioáng nhö maøu goác Y cuûa CIE. Chæ rieâng thaønh phaàn Y cuûa moät tín hieäu ti vi maøu ñöôïc theå hieän treân ti vi ñen traéng. Maøu ñöôïc maõ hoaù trong 2 thaønh phaàn coøn laïi laø I vaø Q. Maøu YIQ söû duïng heä toaï ñoä Ñeà caùc 3 chieàu vôùi taäp caùc thaønh phaàn nhìn thaáy ñöôïc bieåu dieãn nhö moät khoái ña dieän loài trong khoái laäp phöông RGB.
PHAÀN IV : TÌM HIEÅU CÔ SÔÛ DÖÕ LIEÄU CUÛA BAØI TOAÙN
Giôùi thieäu chung veà vieäc choïn maøu cho in hoa :
Trong thöïc teá saûn xuaát, vieäc choïn maøu cho maãu in caên cöù treân caùc maøu ñöôïc löu trong quaù trình thöû maøu taïi phoøng thí nghieäm. Caùc maøu naøy ñöôïc löu trong soå löu maãu maøu (coøn goïi laø Catalog maøu), moãi loaïi vaûi coù moät Catalog maøu khaùc nhau trong ñoù coù ghi coâng thöùc thuoác nhuoäm taïo neân maøu trong catalog. Khi coù maãu hoa caàn in thöû, nhaân vieân thöû maøu seõ choïn maøu cho maãu hoa döïa treân caùc maøu ñaõ coù saün trong Catalog maøu, neáu maøu khaùch haøng yeâu caàu khoâng coù trong Catalog maøu thí nhaân vieân thí nghieäm seõ tieán haønh thí nghieäm ñeå taïo ra maøu theo yeâu caàu cuûa khaùch haøng, sau ñoù löu vaøo soå catalog maøu.
Ví duï :
Loaïi vaûi : Phi boùng (FH03)
Maøu : GR75
Thaønh phaàn thuoác nhuoäm : Tyû leä
- Dianix Yellow Brown FG 2S 0.05%
- Dianix Black FK 2S 0.3%
- Dianix Rubin RS 3TH 0.5%
Cô sôû döõ lieäu :
Töø thöïc teá treân, ñeå vieäc choïn maøu baèng chöông trình tröôùc tieân ta caàn ñöa caùc döõ lieäu trong catalog maøu vaøo maùy tính döôùi daïng cô sôû döõ lieäu. ÔÛ ñaây toâi xaây döïng cô sôû döõ lieäu baèng Microsoft Access 97.
Löôïc ñoà quan heä :
THUOCNHUOM
- MSThuocnhuom
- Tenthuocnhuom
DONIN
- IDDonin
- Ngayin
(1,n)
(1,n)
TYLE
- IDTyle
- Tyle
(1,n)
LOAIVAI
- MSVai
- TenVai
- PE
- Cotton
MAUIN
- IDMauin
- Tenmau
- Mau
(1,n)
Moâ hình toå chöùc döõ lieäu :
LOAIVAI(MSVai, TenVai, PE, Cotton)
MAUIN(IDMauin, TenMau, Mau)
THUOCNHUOM(MSThuocnhuom, Tenthuocnhuom)
TYLE(IDTyle, IDMauin, MSThuocnhuom, IDDonin, Tyle)
DONIN(IDDonin, MSVai, ngayin)
Moâ hình vaät lyù döõ lieäu :
LOAIVAI(MSVai, TenVai, PE, Cotton)
LOAIVAI
Field name
Data Type
Field size
Validation Rule
MSVai
Text
10
Tenvai
Text
30
PE
Integer
Cotton
Integer
MAUIN(IDMauin, TenMau, Mau)
MAUIN
Field name
Data Type
Field size
Validation Rule
IDMauin
AutoNum
TenMau
Text
15
Mau
Long
THUOCNHUOM(MSThuocnhuom, Tenthuocnhuom)
THUOCNHUOM
Field name
Data Type
Field size
Validation Rule
MSthuocnhuom
Text
10
Tenthuocnhuom
Text
50
TYLE(IDTyle, IDMauin, MSThuocnhuom,IDDonin,Tyle)
TYLE
Field name
Data Type
Field size
Validation Rule
IDTyle
AutoNum
Tyle
Double
DONIN(IDDonin,MSVai,ngayin,)
DONIN
Field name
Data Type
Field size
Validation Rule
IDDonin
AutoNum
Ngayin
Date
CSDL ñöôïc thieát keá baèng Ascess97 ñöôïc nhuùng vaøo VB6.0 thoâng qua ñoái töôïng döõ lieäu ADO (ActiveX Data Objects).
Tìm hieåu veà ñoái töôïng ADO :
Cho ñeán VB 5.0 ADO (Döõ lieäu ñoái töôïng ActiveX – ActiveX Data Object) trôû thaønh neàn taûng cuûa kyõ thuaät truy caäp cô sôû döõ lieäu Internet. Trong VB 6.0, ADO caøng quan troïng hôn – maïnh meõ hôn. Ta coù theå duøng ADO khoâng chæ truy caäp cô sôû döõ lieäu thoâng qua trang Web, maø coøn coù theå duøng noù ñeå laáy döõ lieäu töø öùng duïng vieát baèng VB. ADO laø giao dieän döïa treân ñoái töôïng cho coâng ngheä döõ lieäu môùi goïi laø OLE DB.
OLE DB ñöôïc thieát keá ñeå thay theá ODBC nhö moät phöông thöùc truy caäp döõ lieäu. ODBC hieän thôøi laø tieâu chuaån phía Client söû duïng Windows raát phoå bieán ñeå truy caäp caùc döõ lieäu quan heä bôûi vì noù thieát laäp caùc Server cô sôû döõ lieäu quan heä caøng toång quaùt caøng toát ñeán caùc öùng duïng Client. OLE DB ñi saâu hôn moät böôùc, baèng caùch laøm cho taát caû nguoàn döõ lieäu trôû thaønh toång quaùt ñoái vôùi öùng duïng Client.
Xaây döïng öùng duïng VB vôùi ADO :
ADO laø coâng ngheä truy caäp cô sôû döõ lieäu höôùng ñoái töôïng töông töï DAO vaø RDO.
ADO hieän nay ñöôïc Microsoft xem laø kyõ thuaät ñeå truy caäp cô sôû döõ lieäu töø Web server. Bôûi vì ADO ñöôïc cung caáp döôùi daïng thö vieän ActiveX Server (töông töï DAO vaø RDO), ta coù theå thoaûi maùi duøng ADO trong öùng duïng VB. Trong thöïc teá, baèng nhieàu caùch, ta seõ thaáy raèng söû duïng ADO ñeå laøm vieäc vôùi cô sôû döõ lieäu Client/Server thì deã hôn caùc kyõ thuaät khaùc.
Phaàn lôùn caùc laäp trình vieân VB khoâng töông taùc tröïc tieáp vôùi OLE DB. Thay vaøo ñoù, hoï laäp trình vôùi ADO, moâ hình ñoái töôïng cung caáp giao tieáp vôùi OLE DB.
Trình cung caáp OLE DB khoâng nhieàu nhö caùc trình ñieàu khieån ODBC, nhöng soá löôïng naøy ñaõ taêng leân ñaùng keå töø khi ADO 2.0 ñöôïc phaùt haønh vaøo naêm 1998. Phieân baûn naøy ñaõ ñöôïc ñöa vaøo VB 6.0, bao goàm caùc trình cung caáp cuïc boä cho SQL server, Microsoft Jet/Accesss.
Ta chæ caàn laäp trình vôùi phaàn giao dieän ngöôøi söû duïng ôû phía Client. Bôûi vì vieäc truy caäp döõ lieäu treân caû trình duyeät Web vaø öùng duïng VB ñöôïc chuyeån heát veà phía ActiveX Server, ta coù theå baûo ñaûm raèng logic chöông trình luoân nhaát quaùn, baát keå loaïi öùng duïng naøo ñang ñöôïc duøng.
Caøi ñaët vaø thieát laäp tham chieáu ñeán ADO trong öùng duïng Visual Basic :
ADO ñöôïc caøi ñaët nhö moät phaàn cuûa Visual Basic 6.0
Sau khi caøi ñaët xong, ta baét ñaàu söû duïng noù baèng caùch thieát laäp tham chieáu ñeán thö vieän ADO trong öùng duïng VB, töông töï nhö khi thieát laäp tham chieáu ñeán DAO.
PHAÀN V : THIEÁT KEÁ VAØ CAØI ÑAËT CHÖÔNG TRÌNH
Caáu truùc chöông trình :
v Caùc chöùc naêng chính cuûa chöông trình
Taïo caùc lôùp Film slide töø File aûnh ñen traéng (Duøng Scaner)
Ñieàu chænh caùc lôùp Film truøng khít leân nhau (Qua 2 ñieåm Rappo)
Choïn maøu cho caùc lôùp Film töø CSDL maøu
Thieát keá theo chöùc naêng cuûa chöông trình thì ta coù bieåu ñoà phaân boá chöùc naêng cuûa chöông trình nhö sau :
Chöông trình choïn maøu cho maãu hoa
Ñieàu chænh caùc lôùp Film truøng Rappo
Choïn maøu cho caùc lôùp Film töø CSDL maøu
Taïo caùc lôùp Film Slide treân maùy tính
Ngoaøi ra khi chuùng ta tieán haønh caøi ñaët chöông trình chuùng ta caàn phaûi thöïc hieän qui taéc chung laø giao tieáp ngöôøi – maùy, do ñoù caàn phaûi coù theâm coâng cuï trôï giuùp cho quaù trình choïn maøu cho maãu hoa baèng maùy tính.
v Giao dieän chính cuûa chöông trình :
Choïn lôùp
CSDL maøu
Xem taát caû caùc lôùp ñaõ coù
Xoùa traéng
maøn hình
Xem laïi
lôùp(Slide)
Taïo lôùp
(Slide)
Laáy lôùp
Chöông trình ñöôïc vieát baèng Visual Basic 6.0 chaïy treân Heä ñieàu haønh Windows .
CSDL ñöôïc thieát keá baèng Ascess97 ñöôïc nhuùng vaøo VB6.0 thoâng qua ñoái töôïng döõ lieäu ADO (ActiveX Data Objects)
Thöïc nghieäm choïn maøu moät maãu hoa :
Sau khi caøi ñaët chöông trình, chuùng ta tieán haønh thöïc nghieäm choïn maøu cho moät maãu hoa ñeå ñaùnh giaù keát quaû. Sau ñaây laø moät soá thöïc nghieäm thu ñöôïc :
Töø boä maãu Film slide, ta scan vaøo maùy tính vôùi caùc taäp tin sau :
Class1.wfm, Class2.Wfm, Class3.Wfm, Class4.Wfm, Class5.Wfm, Class6.Wfm, Class7.Wfm
Sau ñoù laàn löôït taïo thaønh caùc lôùp trong chöông trình laø : Class1, Class2, Class3, Class4, Class5, Class6, Class7.
Ñieàu chænh Rappo vaø choïn maøu töø CSDL maøu :
Sau khi ñaõ choïn caùc lôùp vaø choïn caùc ñieåm rappo chuaån, ta choïn nuùt leänh preview, nuùt leänh naøy seõ goïi thuû tuïc Preview() tieán haønh tính toaùn ñieàu chænh caùc caùc lôùp cho truøng khít .
Nhaäp cô sôû döõ lieäu maøu vaøo chöông trình :
Caên cöù vaøo Catalog maøu cuûa phoøng thí nghieäm ngöôøi söû duïng chöông trình seõ tieán haønh queùt maãu maøu vaø döõ lieäu thuoác in vaøo thoâng qua Form Datainput vaø löu vaøo CSDL cuûa chöông trình
Töø oâ maãu maøu beân phaûi ngöôøi söû duïng ñieàu chænh ba thoâng soá RBG ñeå ñaït ñöôïc maøu nhö maøu CATALOG.
Moät soá thuû tuïc chính trong chöông trình :
a. Thuû tuïc laáy File töø oå ñóa vaø taïo lôùp Film :
Private Sub CmdImport_Click()
On Error GoTo DialogError
With CommonDialog1
.CancelError = True
.Filter = "AllFile (*.*)|*.*|Windows Bitmap (*.Bmp)|*.Bmp|Windows MetaFile (*.Wmf)|*.Wmf "
.DialogTitle = "Select a class slide to open"
.ShowOpen
PicSlaver.Picture = LoadPicture(.FileName)
End With
DialogError:
PicSlaver.Move 0, 0
HScngang.Max = Abs(PicSlaver.Width - PicMain.Width)
VScdoc.Max = Abs(PicSlaver.Height - PicMain.Height)
End Sub
Private Sub CmdTaolop_Click()
Static i, j As Integer
FrmMain.MousePointer = 11
Select Case lop
Case 0
Taolop
Lop0 = A
ReDim A(1)
Case 1
Taolop
Lop1 = A
ReDim A(1)
Case 2
Taolop
Lop2 = A
ReDim A(1)
Case 3
Taolop
Lop3 = A
ReDim A(1)
Case 4
Taolop
Lop4 = A
ReDim A(1)
Case 5
Taolop
Lop5 = A
ReDim A(1)
Case 6
Taolop
Lop6 = A
ReDim A(1)
Case 7
Taolop
Lop7 = A
ReDim A(1)
Case 8
Taolop
Lop8 = A
ReDim A(1)
Case 9
Taolop
Lop9 = A
ReDim A(1)
End Select
FrmMain.MousePointer = 1
End Sub
Private Sub Taolop()
Dim diem, i, j As Integer
'Duyet so diem mau cua lop
diem = 0
For i = 1 To PicSlaver.Width
For j = 1 To PicSlaver.Height
If (PicSlaver.Point(i, j) = 0) Or (PicSlaver.Point(i, j) = Solop(2, lop)) Then
diem = diem + 1
End If
Next
Next
'gan so phan tu bang so diem mau
ptu = diem + 3
ReDim A(1 To 2, 1 To ptu)
'luu toa do X,Y cua diem mau
diem = 4
For i = 1 To PicSlaver.Width
For j = 1 To PicSlaver.Height
If (PicSlaver.Point(i, j) = 0) Or (PicSlaver.Point(i, j) = Solop(2, lop)) Then
A(1, diem) = i
A(2, diem) = j
diem = diem + 1
End If
Next
Next
'luu thong so (So Ptu,Rappo1,Rappo2)
A(1, 1) = ptu
A(1, 2) = Rappo(1, 1)
A(2, 2) = Rappo(1, 2)
A(1, 3) = Rappo(2, 1)
A(2, 3) = Rappo(2, 2)
End Sub
b. Thuû tuïc choïn maøu cho lôùp Film :
Private Sub Command1_Click(Index As Integer)
Select Case lop
Case 0
Solop(2, lop) = Command1(Index).BackColor
A = Lop0
Load_pic_Color
Case 1
Solop(2, lop) = Command1(Index).BackColor
A = Lop1
Load_pic_Color
Case 2
Solop(2, lop) = Command1(Index).BackColor
A = Lop2
Load_pic_Color
Case 3
Solop(2, lop) = Command1(Index).BackColor
A = Lop3
Load_pic_Color
Case 4
Solop(2, lop) = Command1(Index).BackColor
A = Lop4
Load_pic_Color
Case 5
Solop(2, lop) = Command1(Index).BackColor
A = Lop5
Load_pic_Color
Case 6
Solop(2, lop) = Command1(Index).BackColor
A = Lop6
Load_pic_Color
Case 7
Solop(2, lop) = Command1(Index).BackColor
A = Lop7
Load_pic_Color
Case 8
Solop(2, lop) = Command1(Index).BackColor
A = Lop8
Load_pic_Color
Case 9
Solop(2, lop) = Command1(Index).BackColor
A = Lop9
Load_pic_Color
End Select
End Sub
Public Sub Load_pic_Color()
Dim i, X, Y As Integer
Stsbar1.Panels(4).Text = CobLop.ItemData(lop)
X = A(1, 2)
Y = A(2, 2)
Stsbar1.Panels(6).Text = Str(X) & "," & " " & Str(Y)
X = A(1, 3)
Y = A(2, 3)
Stsbar1.Panels(8).Text = Str(X) & "," & " " & Str(Y)
For i = 4 To A(1, 1)
X = A(1, i)
Y = A(2, i)
PicSlaver.PSet (X, Y), (Solop(2, lop))
Next
End Sub
c. Thuû tuïc ñieàu chænh Rappo truøng khít leân nhau :
Private Sub CmdPreview_Click()
'Dim i As Byte
PicSlaver.Picture = LoadPicture("")
For LopP = 0 To 9
If Solop(1, LopP) 10 Then
Select Case LopP
Case 0
A = Lop0
Preview
ReDim A(1)
Case 1
A = Lop1
Dich_Diem
Preview
Lop1 = A
ReDim A(1)
Case 2
A = Lop2
Dich_Diem
Preview
Lop2 = A
ReDim A(1)
Case 3
A = Lop3
Dich_Diem
Preview
Lop3 = A
ReDim A(1)
Case 4
A = Lop4
Dich_Diem
Preview
Lop4 = A
ReDim A(1)
Case 5
A = Lop5
Dich_Diem
Preview
Lop5 = A
ReDim A(1)
Case 6
A = Lop6
Dich_Diem
Preview
Lop6 = A
ReDim A(1)
Case 7
A = Lop7
Dich_Diem
Preview
Lop7 = A
ReDim A(1)
Case 8
A = Lop8
Dich_Diem
Preview
Lop8 = A
ReDim A(1)
Case 9
A = Lop9
Dich_Diem
Preview
Lop9 = A
ReDim A(1)
End Select
End If
Next
End Sub
Public Sub Dich_Diem()
Dim X, Y, X1, X2, X3, X4, Y1, Y2, Y3, Y4 As Integer
Dim i, Dx, Dy As Integer
Dim CosA, SinA As Double
Dim A2, B2, C2 As Long
Dim Teta As Boolean
X1 = Lop0(1, 2)
Y1 = Lop0(2, 2)
X2 = Lop0(1, 3)
Y2 = Lop0(2, 3)
X3 = A(1, 2)
Y3 = A(2, 2)
X4 = A(1, 3)
Y4 = A(2, 3)
'Dich diem ve diem Rappo chuan
Dx = X1 - X3
Dy = Y1 - Y3
For i = 4 To A(1, 1)
X = A(1, i) + Dx
Y = A(2, i) + Dy
A(1, i) = X
A(2, i) = Y
Next
A(1, 2) = X3 + Dx
A(2, 2) = Y3 + Dy
A(1, 3) = X4 + Dx
A(2, 3) = Y4 + Dy
X3 = A(1, 2)
Y3 = A(2, 2)
X4 = A(1, 3)
Y4 = A(2, 3)
If (Y4) > (Y2) Then
Teta = True
Else
Teta = False
End If
'Tinh goc xoay Teta
A2 = (X4 - X2) ^ 2 + (Y4 - Y2) ^ 2
B2 = (X1 - X4) ^ 2 + (Y1 - Y4) ^ 2
C2 = (X2 - X1) ^ 2 + (Y2 - Y1) ^ 2
CosA = (B2 + C2 - A2) / (2 * Sqr(B2 * C2))
SinA = Sqr(1 - CosA ^ 2)
'Dich diem ve goc toa do
Dx = 0 - X3
Dy = 0 - Y3
For i = 4 To A(1, 1)
X = A(1, i) + Dx
Y = A(2, i) + Dy
A(1, i) = X
A(2, i) = Y
Next
A(1, 2) = X3 + Dx
A(2, 2) = Y3 + Dy
A(1, 3) = X4 + Dx
A(2, 3) = Y4 + Dy
X3 = A(1, 2)
Y3 = A(2, 2)
X4 = A(1, 3)
Y4 = A(2, 3)
'Xoay diem
If Teta Then 'Goc teta am
For i = 4 To A(1, 1)
X = Round(A(1, i) * CosA + A(2, i) * SinA)
Y = Round(A(1, i) * -SinA + A(2, i) * CosA)
A(1, i) = X
A(2, i) = Y
Next
X = Round(X4 * CosA + Y4 * SinA)
Y = Round(X4 * -SinA + Y4 * CosA)
A(1, 3) = X
A(2, 3) = Y
Else 'Goc Teta duong
For i = 4 To A(1, 1)
X = Round(A(1, i) * CosA - A(2, i) * SinA)
Y = Round(A(1, i) * SinA + A(2, i) * CosA)
A(1, i) = X
A(2, i) = Y
Next
X = Round(X4 * CosA - Y4 * SinA)
Y = Round(X4 * SinA + Y4 * CosA)
A(1, 3) = X
A(2, 3) = Y
End If
'Dich diem lai vi tri ban dau
For i = 4 To A(1, 1)
X = A(1, i) - Dx
Y = A(2, i) - Dy
A(1, i) = X
A(2, i) = Y
Next
A(1, 2) = X3 - Dx
A(2, 2) = Y3 - Dy
A(1, 3) = X4 - Dx
A(2, 3) = Y4 - Dy
End Sub
Public Sub Preview()
Dim i, X, Y As Integer
For i = 4 To A(1, 1)
X = A(1, i)
Y = A(2, i)
PicSlaver.PSet (X, Y), (Solop(2, LopP))
Next
End Sub
d. Thuû tuïc laáy maøu töø CSDL :
Sub BangMau()
Dim i As Integer
Dim adoConnection As ADODB.Connection
Dim adoRecordset As ADODB.Recordset
Set adoConnection = New ADODB.Connection
Set adoRecordset = New ADODB.Recordset
adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:\BTHai-VB\totnghiep\colordesign.mdb"
adoRecordset.CursorLocation = adUseClient
adoRecordset.CursorType = adOpenStatic
adoRecordset.Open "Mauin", adoConnection
i = 0
With adoRecordset
If .RecordCount > 0 Then
Dim Kt As Boolean
.MoveFirst
Kt = False
While Not (.EOF) And Not (Kt)
If UCase(Trim(.Fields(1).Value)) = UCase(Trim(DataCobMSVai.text)) Then
MangTenmau(i) = UCase(Trim(.Fields(2)))
MangMau(i) = .Fields(3)
i = i + 1
.MoveNext
Else
.MoveNext
End If
Wend
End If
End With
Somau = i - 1
adoRecordset.Close
End Sub
Thuû tuïc taïo CSDL trong chöông trình :
Option Explicit
Dim i, j As Integer
Dim mau As Long
Dim St, R, G, B As String
Dim numchar As Byte
Dim Red, Green, Blue As Integer
Public Function Dlookup(Tenbang As String, Stt1 As Integer, Stt2 As Integer, TenDk As String) As String
Dim adoConnection As ADODB.Connection
Dim adoRecordset As ADODB.Recordset
Dim Kq As String
Kq = " "
Set adoConnection = New ADODB.Connection
Set adoRecordset = New ADODB.Recordset
adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:\BTHai-VB\totnghiep\colordesign.mdb"
adoRecordset.CursorLocation = adUseClient
adoRecordset.CursorType = adOpenStatic
adoRecordset.Open Tenbang, adoConnection
adoRecordset.Requery
With adoRecordset
If .RecordCount > 0 Then
Dim Kt As Boolean
.MoveFirst
Kt = False
While Not (.EOF) And Not (Kt)
If UCase(Trim(.Fields(Stt1).Value)) = UCase(Trim(TenDk)) Then
Kq = Trim(.Fields(Stt2).Value)
Kt = True
Else
.MoveNext
End If
Wend
End If
End With
Dlookup = Kq
End Function
Private Sub CmdCancel_Click()
Unload Me
FrmMain.Visible = True
End Sub
Private Sub CmdOK_Click()
Dim traloi
If Kiemtra(DataCobMSvai.text, TxtMSMau.text) Then
AddData
Else
traloi = MsgBox("Da co Mau " & TxtMSMau.text & " Tren vai " & DataCobMSvai.text, vbOKOnly)
If traloi = vbOKOnly Then
Exit Sub
End If
End If
End Sub
Private Sub CmdRefill_Click()
mau = PicScan.Point(0, 0)
St = Taochuoi(mau)
R = Right(St, 2)
G = Mid(St, 3, 2)
B = Left(St, 2)
Red = changeHex(R)
Green = changeHex(G)
Blue = changeHex(B)
For i = 0 To PicScan.ScaleWidth - 1
For j = 0 To PicScan.ScaleHeight - 1
mau = PicScan.Point(i, j)
St = Taochuoi(mau)
R = Right(St, 2)
G = Mid(St, 3, 2)
B = Left(St, 2)
Red = (Red + changeHex(R)) / 2
Green = (Green + changeHex(G)) / 2
Blue = (Blue + changeHex(B)) / 2
Next
Next
PicRefill.BackColor = RGB(Red, Green, Blue)
HSBRed.Value = Red
HSBGreen.Value = Green
HSBBlue.Value = Blue
End Sub
Private Sub DataCobMSVai_Change()
TxtTenVai.text = Dlookup("Loaivai", 0, 1, DataCobMSvai.text)
End Sub
Private Sub DataCobTP_Click(Index As Integer, Area As Integer)
For i = 0 To 2
TxtMSthuoc(i) = Dlookup("Tenthuoc", 1, 0, DataCobTP(i).text)
Next
End Sub
Private Sub HSBRed_Change()
Red = HSBRed.Value
PicRefill.BackColor = RGB(Red, Green, Blue)
TxtR.text = Red
End Sub
Private Sub HSBGreen_Change()
Green = HSBGreen.Value
PicRefill.BackColor = RGB(Red, Green, Blue)
TxtG.text = Green
End Sub
Private Sub HSBBlue_Change()
Blue = HSBBlue.Value
PicRefill.BackColor = RGB(Red, Green, Blue)
TxtB.text = Blue
End Sub
Public Function changeHex(ByVal Chuoi As String) As Byte
Dim i, Sodau, sosau As Byte
For i = 1 To 2
If i = 1 Then
Select Case Mid(Chuoi, i, 1)
Case "0"
Sodau = 0 * 16
Case "1"
Sodau = 1 * 16
Case "2"
Sodau = 2 * 16
Case "3"
Sodau = 3 * 16
Case "4"
Sodau = 4 * 16
Case "5"
Sodau = 5 * 16
Case "6"
Sodau = 6 * 16
Case "7"
Sodau = 7 * 16
Case "8"
Sodau = 8 * 16
Case "9"
Sodau = 9 * 16
Case "A"
Sodau = 10 * 16
Case "B"
Sodau = 11 * 16
Case "C"
Sodau = 12 * 16
Case "D"
Sodau = 13 * 16
Case "E"
Sodau = 14 * 16
Case "F"
Sodau = 15 * 16
End Select
Else
Select Case Mid(Chuoi, i, 1)
Case "0"
sosau = 0
Case "1"
sosau = 1
Case "2"
sosau = 2
Case "3"
sosau = 3
Case "4"
sosau = 4
Case "5"
sosau = 5
Case "6"
sosau = 6
Case "7"
sosau = 7
Case "8"
sosau = 8
Case "9"
sosau = 9
Case "A"
sosau = 10
Case "B"
sosau = 11
Case "C"
sosau = 12
Case "D"
sosau = 13
Case "E"
sosau = 14
Case "F"
sosau = 15
End Select
End If
Next
changeHex = Sodau + sosau
End Function
Public Function Taochuoi(ByVal Xau As Long) As String
Dim St As String
St = Hex(mau)
numchar = Len(St)
Select Case numchar
Case 1
St = "00000" + St
Case 2
St = "0000" + St
Case 3
St = "000" + St
Case 4
St = "00" + St
Case 5
St = "0" + St
Case Else
St = St
End Select
Taochuoi = St
End Function
Private Sub Form_Load()
TxtR.text = HSBRed.Value
TxtB.text = HSBBlue.Value
TxtG.text = HSBGreen.Value
End Sub
Private Sub PicScan_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
mau = PicScan.Point(X, Y)
St = Taochuoi(mau)
R = Right(St, 2)
G = Mid(St, 3, 2)
B = Left(St, 2)
Red = changeHex(R)
Green = changeHex(G)
Blue = changeHex(B)
PicRefill.BackColor = RGB(Red, Green, Blue)
HSBRed.Value = Red
HSBGreen.Value = Green
HSBBlue.Value = Blue
End Sub
Private Sub PicScan_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
PicScan.MousePointer = 2
PicSample.BackColor = PicScan.Point(X, Y)
End Sub
Public Function Kiemtra(Field1 As String, Field2 As String) As Boolean
Dim adoConnection As ADODB.Connection
Dim adoRecordset As ADODB.Recordset
Dim Kq As Boolean
Kq = True
Set adoConnection = New ADODB.Connection
Set adoRecordset = New ADODB.Recordset
adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:\BTHai-VB\totnghiep\colordesign.mdb"
adoRecordset.CursorLocation = adUseClient
adoRecordset.CursorType = adOpenStatic
adoRecordset.Open "Mauin", adoConnection
adoRecordset.Requery
With adoRecordset
If .RecordCount > 0 Then
Dim Kt As Boolean
.MoveFirst
Kt = False
While Not (.EOF) And Not (Kt)
If UCase(Trim(.Fields(1).Value)) = UCase(Trim(Field1)) And UCase(Trim(.Fields(2).Value)) = UCase(Trim(Field2)) Then
Kq = False
Kt = True
Else
.MoveNext
End If
Wend
End If
End With
Kiemtra = Kq
End Function
Public Sub AddData()
Dim i, j As Byte
Dim IDmauin As Integer
Dim adoConnection As ADODB.Connection
Dim adoRecordset As ADODB.Recordset
Dim Kq As Boolean
Kq = True
Set adoConnection = New ADODB.Connection
Set adoRecordset = New ADODB.Recordset
adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:\BTHai-VB\totnghiep\colordesign.mdb"
adoRecordset.CursorLocation = adUseClient
adoRecordset.CursorType = adOpenKeyset
adoRecordset.LockType = adLockOptimistic
For i = 1 To 3
If i = 1 Then
adoRecordset.Open "Loaivai", adoConnection
With adoRecordset
If .RecordCount > 0 Then
Dim Kt As Boolean
.MoveFirst
Kt = False
While Not (.EOF) And Not (Kt)
If UCase(Trim(.Fields(0).Value)) = UCase(Trim(DataCobMSvai.text)) Then
Kt = True
Else
.MoveNext
End If
Wend
End If
End With
If Not (Kt) Then
adoRecordset.AddNew
adoRecordset.Fields(0) = DataCobMSvai.text
adoRecordset.Fields(1) = TxtTenVai.text
adoRecordset.Update
End If
adoRecordset.Close
End If
If i = 2 Then
adoRecordset.Open "Mauin", adoConnection
adoRecordset.AddNew
adoRecordset.Fields(1) = DataCobMSvai.text
adoRecordset.Fields(2) = TxtMSMau.text
adoRecordset.Fields(3) = PicRefill.BackColor
adoRecordset.Update
IDmauin = adoRecordset.Fields(0)
adoRecordset.Close
End If
If i = 3 Then
adoRecordset.Open "Donin", adoConnection
For j = 0 To 2
adoRecordset.AddNew
adoRecordset.Fields(1) = IDmauin
adoRecordset.Fields(2) = TxtMSthuoc(j).text
adoRecordset.Fields(3) = TxtTP(j).text
adoRecordset.Update
Next
adoRecordset.Close
End If
Next
End Sub
PHAÀN VI : NHAÄN XEÙT
Sau khi tìm hieåu vaø thöïc hieän chöông trình, toâi thaáy ñaây laø moät ñeà taøi raát thieát thöïc trong thöïc teá saûn xuaát cuûa nhaø maùy, noù giuùp cho coâng ñoaïn thöû maãu hoa ñöôïc tieán haønh nhanh choùng, tieát kieäm thôøi gian vaø chi phí saûn xuaát thöû. Noäi dung chính cuûa chöông trình giaûi quyeát ñöôïc caùc vaán ñeà sau :
Taïo ñöôïc caùc Film slide treân maùy tính.
Ñieàu chænh caùc Film Slide treân maùy truøng khít vôùi nhau.
Choïn maøu theo döõ lieäu maøu ñaõ coù saün.
Taïo thaønh boä maãu hoa hoaøn chænh treân maùy tính
Tuy nhieân do thôøi gian coù haïn neân ñeà taøi chöa ñöôïc nghieân cöùu saâu nhaèm caûi thieän giao dieän ngöôøi – maùy cuõng nhö tính deã duøng cuûa chöông trình, chöông trình coù theå môû roäng ra cho coâng vieäc tính toaùn löôïng hoùa chaát thuoác nhuoäm tieâu toán khi in chính thöùc maãu hoa giuùp cho coâng vieäc thoáng keâ vaø tính toaùn giaù thaønh saûn phaåm.
Moät laàn nöõa xin chaân thaønh caûm ôn thaày Nguyeãn Ñình Thuaân, caùc baïn sinh vieân cuøng lôùp vaø caùc ñoàng nghieäp taïi nhaø maùy deät Taân Tieán ñaõ höôùng daãn vaø giuùp ñôõ toâi hoaøn thaønh ñeà taøi naøy.
Nguyeãn Hoàng Haûi
Muïc luïc
Trang
Lôøi noùi ñaàu 2
Phaàn I : Giôùi thieäu coâng ngheä saûn xuaát vaûi in hoa 5
1. Coâng ngheä in hoa 5
2. Giôùi thieäu baøi toaùn 6
Phaàn II : Caùc pheùp bieán ñoåi ñeå lôùp Film truøng khít nhau 8
I. Caùc khaùi nieäm toång quan cuûa KT ñoà hoaï 8
II. Pheùp bieán ñoåi ñeå caùc lôùp Film truøng khít 10
1. Taïo lôùp Film 10
2. Caùc pheùp toaùn ñieàu chænh truøng khít 11
Phaàn III. Tìm hieåu moät soá File aûnh vaøheâ5 maøu 18
I. Tìm hieåu moät soá file aûnh 18
II. Tìm hieåu veà heä maøu 23
Phaàn IV. Tìm hieåu cô sôû döõ lieäu cuûa baøi toaùn 25
1. Giôùi thieäu chung veà vieäc choïn maøu in hoa 25
2. Cô sôû döõ lieäu 25
3. Tìm hieåu veà ñoái töôïng ADO 27
4. Xaây döïng öùng duïng VB vôùi ADO 27
5. Caøi ñaët vaø thieát laäp tham chieáu ñeán ADO 28
Phaàn V : Thieát keá vaø caøi ñaët chöông trình 29
1. Caáu truùc chöông trình 29
2.Thöïc nghieäm choïn maøu moät maãu hoa 30
3. Moät soá thuû tuïc chính trong chöông trình 33
Phaàn VI : Nhaän xeùt 54
Muïc luïc 55
Taøi lieäu tham khaûo 56
TAØI LIEÄU THAM KHAÛO
Visual Basic 6.0 vaø laäp trình Cô sôû döõ lieäu – NXB giaùo duïc 2000
Kyõ thuaät ñoà hoïa – NXB Khoa hoïc vaø kyõ thuaät
Leâ Tuaán Huøng
Huyønh Quyeát Thaéng
Nhaäp moân xöû lyù aûnh soá – NXB Khoa hoïc vaø kyõ thuaät
Löông Maïnh Baù
Nguyeãn Thanh Thuûy
Các file đính kèm theo tài liệu này:
- Xử lý và chọn mẫu màu cho công đoạn in thử một mẫu in hoa tại nhà máy dệt Tân Tiến.doc