Bài giảng Đồ họa trong.NET trình bày chi tiết nội dung các vấn đề sử dụng GDI+, Các đối tượng đồ họa cơ sở, Các phép biến đổi, Tô màu các đối tượng cơ sở, Đường cong Bezier,... Mời các bạn tham khảo nội dung chi tiết của bài giảng!
Trang 1Đồ họa trong NET
( Ngôn ngữ thể hiện C#)
Trang 2I Sử dụng GDI+ ( đồ họa của NET )
Nguyên t c chung : Nguyên t c chung : ắ ắ
1. S d ng th vi n:1. S d ng th vi n:ử ụử ụ ư ệư ệ
System.Drawing ho c ho c ặặ System.Drawing.Drawing2D…trong .NET
FrameWork ( tùy vào l nh ).ệ
FrameWork ( tùy vào l nh ).ệ
2. Đ v lên 1 Control b t k ( Form, Panel, label…) có nhi u cách, nh ng 2. Đ v lên 1 Control b t k ( Form, Panel, label…) có nhi u cách, nh ng ể ẽể ẽ ấ ỳấ ỳ ềề ưư
đ n gi n nh t là:ơ ả ấ
đ n gi n nh t là:ơ ả ấ
Graphics <tên> = <tên Control>.CreateGraphics() ;
…. [ các l nh v ]. [ các l nh v ]ệệ ẽẽ
Chú ý : G c t a đ s là góc trái trên cùng c a Control G c t a đ s là góc trái trên cùng c a Control ố ố ọ ọ ộ ẽ ộ ẽ ủ ủ
b n đang v ạ ẽ
b n đang v ạ ẽ
Trang 3II Các đối tượng đồ họa cơ sở
Có r t nhi u đ i t ng r t nhi u đ i t ng ấ ấ ề ề ố ượ ố ượ đ h a trong .NET, và l i có đ h a trong .NET, và l i có ồ ọồ ọ ạạ r t nhi u ph ng r t nhi u ph ng ấ ấ ề ề ươ ươ
th c ứ
th c ứ đ v cho cùng 1 đ i t đ v cho cùng 1 đ i tể ẽể ẽ ố ượố ượng đ h a (Overloading), tuy nhiên đây ng đ h a (Overloading), tuy nhiên đây ồ ọồ ọ ởở
ta ch gi i thi u nh ng phỉ ớ ệ ữ ương th c thứ ường d ng cho nh ng đ i tụ ữ ố ượng
ta ch gi i thi u nh ng phỉ ớ ệ ữ ương th c thứ ường d ng cho nh ng đ i tụ ữ ố ượng
c s nh t.ơ ở ấ
c s nh t.ơ ở ấ
1. Đ ườ ng th ng qua 2 đi m: ẳ ể
1. Đ ườ ng th ng qua 2 đi m: ẳ ể
<tên>.DrawLine( Bút v , đi m1, đi m2 );ẽ ể ể
<tên>.DrawLine( Bút v , đi m1, đi m2 );ẽ ể ể
<tên>.DrawLine( Bút v , đi m1.X, đi m1.Y, đi m2.X, đi m2.Y );ẽ ể ể ể ể
<tên>.DrawLine( Bút v , đi m1.X, đi m1.Y, đi m2.X, đi m2.Y );ẽ ể ể ể ể
2. Đ ườ ng g p khúc qua n đi m: ấ ể
2. Đ ườ ng g p khúc qua n đi m: ấ ể
<tên>.DrawLines( Bút v , m ng ch a các đi m );ẽ ả ứ ể
<tên>.DrawLines( Bút v , m ng ch a các đi m );ẽ ả ứ ể
3. Đ ườ ng polygon:
3. Đ ườ ng polygon:
<tên>.DrawPolygon( Bút v , m ng ch a các đi m );ẽ ả ứ ể
<tên>.DrawPolygon( Bút v , m ng ch a các đi m );ẽ ả ứ ể
4. Đ ườ ng Ellipse:
4. Đ ườ ng Ellipse:
<tên>.DrawEllipse( Bút v , hình ch nh t mà Elip n i ti p );ẽ ữ ậ ộ ế
<tên>.DrawEllipse( Bút v , hình ch nh t mà Elip n i ti p );ẽ ữ ậ ộ ế
Chú ý: .NET không có l nh v đ ệ ẽ ườ ng tròn !!
Chú ý: .NET không có l nh v đ ệ ẽ ườ ng tròn !!
Trang 4II Các đối tượng đồ họa cơ sở
5. Hình qu t: ạ
5. Hình qu t: ạ
<tên>.DrawPie( Bút v , hình ch nh t mà đẽ ữ ậ ường tròn n i ti p, góc b t ộ ế ắ
<tên>.DrawPie( Bút v , hình ch nh t mà đẽ ữ ậ ường tròn n i ti p, góc b t ộ ế ắ
đ u, góc quét );ầ
đ u, góc quét );ầ
6. Cung tròn:
<tên>.DrawArc( Bút v , hình ch nh t mà đẽ ữ ậ ường tròn n i ti p, góc b t ộ ế ắ
<tên>.DrawArc( Bút v , hình ch nh t mà đẽ ữ ậ ường tròn n i ti p, góc b t ộ ế ắ
đ u, góc quét );ầ
đ u, góc quét );ầ
6. Hình ch nh t: ữ ậ
6. Hình ch nh t: ữ ậ
<tên>.DrawRectangle( Bút v , đi m1.X, đi m1.Y, chi u dài, chi u r ng );ẽ ể ể ề ề ộ
<tên>.DrawRectangle( Bút v , đi m1.X, đi m1.Y, chi u dài, chi u r ng );ẽ ể ể ề ề ộ
7. Đ ườ ng cong chính t c b t k : ắ ấ ỳ
7. Đ ườ ng cong chính t c b t k : ắ ấ ỳ
<tên>.DrawCurve( Bút v , m ng các đi m );ẽ ả ể
<tên>.DrawCurve( Bút v , m ng các đi m );ẽ ả ể
<tên>.DrawCurve( Bút v , m ng các đi m, offset, S phân đo n, đ ẽ ả ể ố ạ ộ
<tên>.DrawCurve( Bút v , m ng các đi m, offset, S phân đo n, đ ẽ ả ể ố ạ ộ
căng );
Trang 58. Đ ườ ng cong b t ký khép kín: ấ
8. Đ ườ ng cong b t ký khép kín: ấ
<tên>.DrawClosedCurve( Bút v , m ng các đi m, đ căng, ch đ tô ẽ ả ể ộ ế ộ
<tên>.DrawClosedCurve( Bút v , m ng các đi m, đ căng, ch đ tô ẽ ả ể ộ ế ộ
màu );
9. V 1 hình nh: ( có đ n 30 Overload !! ) ẽ ả ế
9. V 1 hình nh: ( có đ n 30 Overload !! ) ẽ ả ế
<tên>.DrawImage( Hình nh, đi m v );ả ể ẽ
<tên>.DrawImage( Hình nh, đi m v );ả ể ẽ
Chú ý : Đ hi n th 1 ph n hình nh (xén hình) ta có th Chú ý : Đ hi n th 1 ph n hình nh (xén hình) ta có th ể ể ể ể ị ị ầ ầ ả ả ể ể s s ử ử
d ng Overload sau ụ
d ng Overload sau ụ :
<tên>.DrawImage( Hình nh, đi m v , hình ch nh t xén, Đ n v đ ả ể ẽ ữ ậ ơ ị ồ
<tên>.DrawImage( Hình nh, đi m v , hình ch nh t xén, Đ n v đ ả ể ẽ ữ ậ ơ ị ồ
h a );ọ
h a );ọ
Đ n v đ h a có th là Pixel,… ơ ị ồ ọ ể
Đ n v đ h a có th là Pixel,… ơ ị ồ ọ ể
10. Vi t 1 chu i: ế ỗ
10. Vi t 1 chu i: ế ỗ
<tên>.DrawString( Chu i, Font, c v , đi m vi t );ỗ ọ ẽ ể ế
<tên>.DrawString( Chu i, Font, c v , đi m vi t );ỗ ọ ẽ ể ế
Chú ý: .NET không có l nh Putpixel !! ệ
Chú ý: .NET không có l nh Putpixel !! ệ
II Các đối tượng đồ họa cơ sở
Trang 6Nh l i :Nh l i : ớ ạ ớ ạ G c t a đ s là góc trái trên cùng c a Control b n đang G c t a đ s là góc trái trên cùng c a Control b n đang ố ọ ố ọ ộ ẽ ộ ẽ ủ ủ ạ ạ
v ẽ
v ẽ
1. Phép T nh ti n ( So v i g c t a đ ): ị ế ớ ố ọ ộ
1. Phép T nh ti n ( So v i g c t a đ ): ị ế ớ ố ọ ộ
<tên>.TranslateTransform( ∆x, ∆y );
[ …các l nh v ]ệ ẽ
[ …các l nh v ]ệ ẽ
2. Phép Xoay ( So v i g c t a đ ): ớ ố ọ ộ
2. Phép Xoay ( So v i g c t a đ ): ớ ố ọ ộ
<tên>.RotateTransform( Góc quay );
[ …các l nh v ]ệ ẽ
[ …các l nh v ]ệ ẽ
3. Phép Co giãn:
<tên>.ScaleTransform( Sx, Sy );
[ …các l nh v ]ệ ẽ
[ …các l nh v ]ệ ẽ
III Các phép biến đổi ( Tr anformation )
Trang 7N u vi t nhi u phép bi n đ i liên ti p nhau, thì N u vi t nhi u phép bi n đ i liên ti p nhau, thì ế ế ế ế ề ề ế ế ổ ổ ế ế
.NET s th c hi n l n l ẽ ự ệ ầ ượ t theo đúng th t t trên ứ ự ừ
.NET s th c hi n l n l ẽ ự ệ ầ ượ t theo đúng th t t trên ứ ự ừ
xu ng ố
xu ng ố
Th t các phép bi n đ i là r t quan tr ng ! Th t các phép bi n đ i là r t quan tr ng ! ứ ự ứ ự ế ế ổ ổ ấ ấ ọ ọ
III Các phép biến đổi ( Tranformation )
Trang 8Nh l i ớ ạ
Nh l i ớ ạ : Trong k thu t đ h a ta có khái ni m ma tr n các phép bi n Trong k thu t đ h a ta có khái ni m ma tr n các phép bi n ỹ ỹ ậ ồ ọ ậ ồ ọ ệ ệ ậ ậ ế ế
đ i ổ
đ i ổ
.NET cũng h tr , cho phép b n t o 1 ma tr n t ng ỗ ợ ạ ạ ậ ổ
h p các phép bi n đ i r t d dàng ợ ế ổ ấ ễ
Ma tr n có d ng sau ( 3x3 ): ậ ạ
Ma tr n có d ng sau ( 3x3 ): ậ ạ
III Các phép biến đổi ( Tranformation )
0 0 1
Always 0,0,1
Linear Part
Translation
Part
Để ý : Do Cột 3
luôn cố định, nên ta chỉ cần 6 tham số là đủ xác định ma trận
Trang 9Mã l nh t o ra 1 ma tr n các phép bi n đ i: ệ ạ ậ ế ổ
Mã l nh t o ra 1 ma tr n các phép bi n đ i: ệ ạ ậ ế ổ
Matrix <tên> = new Matrix( ∆x, ∆y, Sx, Sy );
III Các phép biến đổi ( Tranformation )
Sức mạnh của
.NET !!
Trang 101. Tô màu hình ch nh t : ữ ậ
2. Tô hình Elip :
3. Tô Polygon :
IV Tô màu các đối tượng cơ sở
Trang 111. Các ph ươ ng th c v đ ứ ẽ ườ ng Bezier thông d ng: ụ
<tên>.DrawBezier(Bút v , đi m0, đi m1, đi m2, đi m3);ẽ ể ể ể ể <tên>.DrawBezier(Bút v , m ng ch a 4 đi m);ẽ ả ứ ể
P0
P1
P3
P2
Trang 122. Đ ườ ng Bezier c ng tuy n : ộ ế
Trang 13• Kh năng đ h a trong .NET là r t m nh Kh năng đ h a trong .NET là r t m nh ả ả ồ ọ ồ ọ ấ ấ ạ ạ
• Th vi n h tr t t c các đ i t Th vi n h tr t t c các đ i t ư ệ ư ệ ỗ ợ ấ ả ỗ ợ ấ ả ố ượ ố ượ ng đ h a và ph ng đ h a và ph ồ ọ ồ ọ ươ ươ ng th c ng th c ứ ứ
VI Kết luận