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 :
1 Sử dụng thư viện:
System.Drawing hoặc System.Drawing.Drawing2D…trong NET 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 đơn giản nhất là:
Graphics <tên> = <tên Control>.CreateGraphics() ;
… [ các lệnh vẽ ]
Chú ý : Gốc tọa độ sẽ là góc trái trên cùng của
Control bạn đang vẽ.
Trang 3II Các đối tượng đồ họa cơ sở
Có rất nhiều đối tượng đồ họa trong NET, và lại có rất nhiều phương thức để vẽ cho cùng 1 đối tượ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 cơ sở nhất.
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.X, điểm1.Y, điểm2.X,
điểm2.Y );
2 Đường gấp khúc qua n điểm:
<tên>.DrawLines( Bút vẽ, mảng chứa các điểm );
3 Đường polygon:
<tên>.DrawPolygon( Bút vẽ, mảng chứa các điểm );
4 Đường Ellipse:
<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 !!
Trang 4II Các đối tượng đồ họa cơ sở
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 đầ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 đầu, góc qué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 );
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, offset, Số phân đoạn, độ căng );
Trang 58 Đườ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ô màu );
9 Vẽ 1 hình ảnh: ( có đến 30 Overload !! )
<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ể sử dụng Overload sau:
<tên>.DrawImage( Hình ảnh, điểm vẽ, hình chữ nhật xén, Đơn vị đồ họa );
Đơn vị đồ họa có thể là Pixel,…
10 Viết 1 chuỗi:
<tên>.DrawString( Chuỗi, Font, cọ vẽ, điểm viết );
Chú ý: NET không có lệnh Putpixel !!
II Các đối tượng đồ họa cơ sở
Trang 6Nhớ lại : Gốc tọa độ sẽ là góc trái trên cùng của
Control bạn đang vẽ.
1 Phép Tịnh tiến ( So với gốc tọa độ ):
<tên>.TranslateTransform( ∆x, ∆y );
[ …các lệnh vẽ ]
2 Phép Xoay ( So với gốc tọa độ ):
<tên>.RotateTransform( Góc quay );
[ …các lệnh vẽ ]
3 Phép Co giãn:
<tên>.ScaleTransform( Sx, Sy );
[ …các lệnh vẽ ]
III Các phép biến đổi ( Tr anformation )
Trang 7Chú ý:
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 xuố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: Trong kỹ thuật đồ họa ta có khái niệm ma trận các phép biến đổ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 ):
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:
Matrix <tên> = new Matrix( ∆x, ∆y, Sx,
Sy );
[…các lệnh vẽ]
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 :
<tên>.FillRectangle( chổi vẽ, hình chữ nhật cần
tô );
2 Tô hình Elip :
<tên>.FillEllipse( chổi vẽ, hình chữ nhật mà Elip
cần tô nội tiếp);
3 Tô Polygon :
<tên>.FillPolygon ( chổi vẽ, mảng các điểm
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);
V Đường cong Bezier
P0
P1
P3
P2
Trang 122 Đường Bezier cộng tuyến :
Nếu muốn các đường cong Bezier kết nối với nhau mịn màng thì 3 điểm sau phải được cộng tuyến ( cùng trên 1 đường thẳng ):
• Điểm điều khiển thứ 2 của đường Bezier đầu
tiên.
• Điểm kết cuối của đường Bezier đầu tiên
( cũng là điểm kết đầu của đường Bezier thứ
2 ).
• Điểm điều khiển đầu tiên của đường Bezier thứ 2.
V Đường cong Bezier
Trang 13• Khả năng đồ họa trong NET là rất mạnh.
• Thư viện hỗ trợ tất cả các đối tượng đồ họa và phương thức xử lý trên 2D ( và cả 3D ).
VI Kết luận