M sgBox(Asc{"A” ) Xor 50)
128 C hường 15: Thêm dổ họa và các hiệu ứng hoạt hình
C h ư ơ n g 15: T h ê m đổ h ọ a và các hiệu ứng hoạt hình 1 2 9
tạo r a m ộ t k ế t quả bị biến d ạn g hoặc ră n g cưa nhiíng nó hiếm k h i là b ấ t cứ n h ữ n g ^ h ơ n cả m ột sự cô h ìn h ả n h nhỏ.
Class System .Dravving.Graphỉcs
N am espace System .D raw ing bao gồm r ấ t nhiều class để tạ o ả n h và các hiệu ứng đặc b iệ t tro n g các chương trìn h . T rong p h ầ n n ày b ạn sẽ học đói ch ú t về class System .D raw ing.G raphics, cung cấp các phương thức và thuộc tín h đ ể vẽ các h ìn h d ạn g tr ê n các form. B ạn có th ể học về các class khác b ằn g việc th a m khảo tà i liệu Visual Studio Heip.
Cho dù b ạ n tạ o các ả n h chụp m à n h ìn h đơn g iả n hoặc xây dựng các bản vẽ phức tạ p , điều quan trọ n g là p h ải có th ể k ế t x u ấ t n h iều h ìn h d ạn g h ìn h học ch u ẩ n tro n g các chương trìn h . B ảng 15.1 liệ t kê m ột số h ìn h d ạng vẽ cơ b ản và các phương thức m à b ạn sử dụng tro n g class System .D raw ing.G raphics để tạo chúng.
Bảng 15.1 sử dụng các hình dạng và phương ỉhứ c trong class
System .D raw ing . G raphics
H ìn h d ạ n g Đường (Line) H ình chữ n h ậ t (Rectangle) Cung (Arc) H ình tròn/elip (Circle/Ellipse) H ình đa giác (Polygon) P h ư ơ n g th ứ c DrawLìne DrawRectangle DrawArc DrawEllipsft DrawPolygon
Đường cong (Curve) DrawCurve
Các spline Bézier DrawBezier
M ô tả
Đường đơn giản nól hai điểm. H ìn h chử n h ậ t hoặc h in h vuông nối bôn điểm.
Đường cong nôl h ai điểm (một phần của m ột hình elip). H ìn h d ạ n g e lip được bao quanh bởi một h ình chữ nhật. H ình dạng phức tạp có một sô' điểm và cạnh khả biến (được lưu trữ trong một mảng), Một đường cong đi qua một số điểm khả biến (được lưu trữ trong một mảng); các đường cong phức tạ p dược gọi là các spline chính cũng có th ể được vẽ bằng phương thức nàỵ Một đường cong được vẽ bằng việc sử dụng bôn điểm. (Các điểm hai và ba là các điểm "điều khiển").
Ngoài các phương thức trước tạ o các h ìn h dạn g rỗng hoặc các h ìn h dạng "không dược tô đầy" có m ột số phương thức để vẽ các h ìn h d ạ n g được tô đầy bằn g m àụ N hững phương thức n ày có m ột tiề n tố "FiH" ch ẳ n g h ạ n như PillR ectangle, F illE lIipse và PillPolygon.
K h i b ạ n s ử d ụ n g m ộ t p h ư ơ n g t h đ c đổ h ọ a t r o n g c l a s s System .D ravving.G raphics, b ạn cần tạo m ột đô'i tượng G rap h ics tro n g m ã để đại diện cho class là m ột đô'i tượng P en hoặc B rush để biểu th ị những thuộc tín h của h ìn h dạn g m à b ạn muôn vẽ chẳng h ạ n n h ư bề d ầy n é t {line w idth) v à m àu tô (fiil color). Đô'i tượng P en được chuyển dưới d ạng m ột tro n g các đối sô' đến các phương thức không được tô đ ầy b ằ n g màụ Đối tượng B rush được chuyển dưới d ạng m ột dối số k h i m ột m àu tô được m ong muốn. Ví dụ, lệ n h gọi sau đây đến phương thức D raw L ine sử đụng m ột đôi tượng P en v à bôn giá trị sô' nguyên để vẽ m ột đường m àu đỏ b ắ t đầu tạ i pixel (20, 30) v à k ế t th ú c tạ i pixel {100, 80). Đối tượng G rap h ics được k h ai báo b ằn g việc sử dụng tê n G raphicsPun v à đối tượng P e n được k h ai báo b ằn g việc sử dụng tê n PenColor.
Dim GraphicsPun As Graphics
Dim PenColor As New Pen(Color.Red) GraphicsPun = MẹCreateGraphics
GraphicsFun.DrawLine(PenCo!or, 20, 30, 100, 80)
Cú p h áp cho phương thức D raw Line th ì quan trọ n g n h ư n g cũng chú ý b a d ò n g ở t r ê n n ố được b ắ t buộc đ ể sử d ụ n g t r o n g p h ư ơ n g th ứ c Systcm .Dravving.Graphics. B ạn p h ải tạ o các biến đ ể đ ại d iệ n cho cả đối tượng G raphics v à Pen, v à biến G raphics cần được in s ta n tia te (tạo bản sao) b ằng việc sử dụng phương thức C reateG raphics tro n g form Windows, Chú ý rằ n g nam espace S ystem .D raw ing.G raphics được tự động đưa vào project - b ạ n không cần đưa vào m ột câu lệ n h Im p o rts tro n g m ã để tham chiếu class.
Sử dụng sự kiện Paínt của Form
Nếu b ạn te s t phương thức D raw Line trước tro n g m ột chương trìn h , bạn p h ải chú ý rằ n g đường m à b ạn dã tạo kéo dài hoặc ổn đ ịn h tr ê n form m iễn là k h ô n g có gì khác che phủ nó. Nếu m ột hộp th o ại tạ m th ờ i m d tr ê n form v à che phủ dường, đường không còn n h ìn th ấ y được n ữ a k h i to à n bộ form x u ất h iệ n lạị Đường cũng biến m ấ t nếu b ạn th u nh ỏ tố i th iể u (m inim ize) cửa sổ form v à sau đó phóng to (m axim ize) nó lạị Để g iải quyết khuyết