13
Đồ họa trong Đồ họa trong .NET .NET ( Ngôn ngữ thể hiện C#) ( Ngôn ngữ thể hiện C#)

Đồ họa trong .NET ( Ngôn ngữ thể hiện C#)

  • Upload
    wynona

  • View
    39

  • Download
    0

Embed Size (px)

DESCRIPTION

Đồ họa trong .NET ( Ngôn ngữ thể hiện C#). I. 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 ). - PowerPoint PPT Presentation

Citation preview

Page 1: Đồ họa trong  .NET (  Ngôn ngữ thể hiện  C#)

Đồ họa trong .NETĐồ họa trong .NET( Ngôn ngữ thể hiện C#)( Ngôn ngữ thể hiện C#)

Đồ họa trong .NETĐồ họa trong .NET( Ngôn ngữ thể hiện C#)( Ngôn ngữ thể hiện C#)

Page 2: Đồ họa trong  .NET (  Ngôn ngữ thể hiện  C#)

I. Sử dụng GDI+ ( đồ họa của .NET )I. Sử dụng GDI+ ( đồ họa của .NET )I. Sử dụng GDI+ ( đồ họa của .NET )I. 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.DrawingSystem.Drawing hoặc hoặc System.Drawing.Drawing2DSystem.Drawing.Drawing2D…trong .NET …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, 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à:nhưng đơn giản nhất là:

Graphics <tên> = <tên Control>.CreateGraphics() ;Graphics <tên> = <tên Control>.CreateGraphics() ;

……. [ các lệnh vẽ ]. [ các lệnh vẽ ]

Chú ý :Chú ý : Gốc tọa độ sẽ là góc trái trên cùng của Gốc tọa độ sẽ là góc trái trên cùng của Control bạn đang vẽ.Control bạn đang vẽ.

Page 3: Đồ họa trong  .NET (  Ngôn ngữ thể hiện  C#)

II. Các đối tượng đồ họa cơ sởII. Các đối tượng đồ họa cơ sởII. Các đối tượng đồ họa cơ sởII. Các đối tượng đồ họa cơ sở Có Có rất nhiều đối tượngrấ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 rất nhiều

phương thứcphương thức để vẽ cho cùng 1 đối tượng đồ họa (Overloading), để 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 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.dụng cho những đối tượng 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 !!

Page 4: Đồ họa trong  .NET (  Ngôn ngữ thể hiện  C#)

II. Các đối tượng đồ họa cơ sởII. Các đối tượng đồ họa cơ sởII. Các đối tượng đồ họa cơ sởII. 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, <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 );góc bắt đầu, góc quét );

6. Cung tròn:6. Cung tròn:

<tên>.DrawArc( Bút vẽ, hình chữ nhật mà đường tròn nội tiếp, <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 );góc bắ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 <tên>.DrawRectangle( Bút vẽ, điểm1.X, điểm1.Y, chiều dài, chiều rộng );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 );độ căng );

Page 5: Đồ họa trong  .NET (  Ngôn ngữ thể hiện  C#)

8. Đườ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, <tên>.DrawClosedCurve( Bút vẽ, mảng các điểm, độ căng, chế độ tô màu );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ó Chú ý : Để hiển thị 1 phần hình ảnh (xén hình) ta có

thểthể sử dụng Overload sausử dụng Overload sau::

<tên>.DrawImage( Hình ảnh, điểm vẽ, hình chữ nhật xén, Đơn <tên>.DrawImage( Hình ảnh, điểm vẽ, hình chữ nhật xén, Đơn vị đồ họa );vị đồ 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ởII. Các đối tượng đồ họa cơ sởII. Các đối tượng đồ họa cơ sởII. Các đối tượng đồ họa cơ sở

Page 6: Đồ họa trong  .NET (  Ngôn ngữ thể hiện  C#)

Nhớ lại :Nhớ lại : 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ẽ.

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 );<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 );<tên>.RotateTransform( Góc quay );

[ …các lệnh vẽ ][ …các lệnh vẽ ]

3. Phép Co giãn:3. Phép Co giãn:

<tên>.ScaleTransform( Sx, Sy );<tên>.ScaleTransform( Sx, Sy );

[ …các lệnh vẽ ][ …các lệnh vẽ ]

III. Các phép biến đổi ( TrIII. Các phép biến đổi ( Tranformationanformation ) )III. Các phép biến đổi ( TrIII. Các phép biến đổi ( Tranformationanformation ) )

Page 7: Đồ họa trong  .NET (  Ngôn ngữ thể hiện  C#)

Chú ý: Chú ý:

Nếu viết nhiều phép biến đổi liên tiếp nhau, 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ự thì .NET sẽ thực hiện lần lượt theo đúng thứ tự từ trên xuống.từ trên 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 !

Chú ý: Chú ý:

Nếu viết nhiều phép biến đổi liên tiếp nhau, 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ự thì .NET sẽ thực hiện lần lượt theo đúng thứ tự từ trên xuống.từ trên 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 )III. Các phép biến đổi ( Tranformation )III. Các phép biến đổi ( Tranformation )III. Các phép biến đổi ( Tranformation )

Page 8: Đồ họa trong  .NET (  Ngôn ngữ thể hiện  C#)

Nhớ lạiNhớ lại:: Trong kỹ thuật đồ họa ta có khái niệm ma trận các phép Trong kỹ thuật đồ họa ta có khái niệm ma trận các phép biến đổi.biến đổi.

.NET cũng hỗ trợ, cho phép bạn tạo 1 ma trận .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.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 )III. Các phép biến đổi ( Tranformation )III. Các phép biến đổi ( Tranformation )III. Các phép biến đổi ( Tranformation )

00

00

11

Always 0,0,1Always 0,0,1

Linear PartLinear Part

Translation Translation PartPart

Để ý :Để ý : Do Cột 3 Do Cột 3 luôn cố định, luôn cố định,

nên ta chỉ cần 6 nên ta chỉ cần 6 tham số là đủ tham số là đủ

xác định ma trậnxác định ma trận

Page 9: Đồ họa trong  .NET (  Ngôn ngữ thể hiện  C#)

Mã 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 ... );Matrix <tên> = new Matrix( ∆x, ∆y, Sx, Sy ... );

[…các lệnh vẽ][…các lệnh vẽ]

III. Các phép biến đổi ( Tranformation )III. Các phép biến đổi ( Tranformation )III. Các phép biến đổi ( Tranformation )III. Các phép biến đổi ( Tranformation )

Sức mạnh Sức mạnh của .NET !!của .NET !!

Page 10: Đồ họa trong  .NET (  Ngôn ngữ thể hiện  C#)

1. 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ởIV. Tô màu các đối tượng cơ sởIV. Tô màu các đối tượng cơ sởIV. Tô màu các đối tượng cơ sở

Page 11: Đồ họa trong  .NET (  Ngôn ngữ thể hiện  C#)

1. 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. V. Đường cong BezierĐường cong BezierV. V. Đường cong BezierĐường cong Bezier

P0P0

P1P1

P3P3

P2P2

Page 12: Đồ họa trong  .NET (  Ngôn ngữ thể hiện  C#)

2. Đườ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. V. Đường cong BezierĐường cong BezierV. V. Đường cong BezierĐường cong Bezier

Page 13: Đồ họa trong  .NET (  Ngôn ngữ thể hiện  C#)

• 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ượng đồ họa và phương 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 ).thức xử lý trên 2D ( và cả 3D ).

• 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ượng đồ họa và phương 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 ).thức xử lý trên 2D ( và cả 3D ).

VI. Kết luậnVI. Kết luậnVI. Kết luậnVI. Kết luận