Bài giảng GDI+ - Phạm Anh Phương

ppt 40 trang phuongnguyen 6730
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng GDI+ - Phạm Anh Phương", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptbai_giang_gdi_pham_anh_phuong.ppt

Nội dung text: Bài giảng GDI+ - Phạm Anh Phương

  1. GDI+ GV: Phạm Anh Phương Email: paphuong@fit.hcmuns.edu.vn
  2. Chủ đề  GDI & Device Context  GDI+  Các namespace  Kĩ thuật di chuyển ảnh  Kĩ thuật chống flicker
  3. GDI  Tập hàm API dùng để thực hiện việc mọi thao tác vẽ trong hệ điều hành WinXP  Device Context là nơi mà mọi thao tác vẽ thực hiện trên đó. Bao gồm có:  Paint  Brush  Image  Color 
  4. GDI+  Thực hiện vẽ trên môi trường .NET  Cung cấp tập namespace, lớp hướng đối tượng lớn cho việc thực hiện vẽ  Device Context được thay thế bằng đối tượng Graphic  Mỗi control đều có đối tượng Graphic để vẽ nó, bao gồm Form, Button, TextBox, .
  5. GDI+ Các namespace chính Tên Mô tả System.Drawing Định nghĩa những đối tượng vẽ cơ bản (Fonts, Pens, Brushes, ) và đối tượng Graphic System.Drawing.Drawing2D Cung cấp những đối tượng vẽ vector 2 chiều như gradient brushes, gradient pens, System.Drawing.Image Thao tác với hình ảnh như thực hiện vẽ, lấy thông tin kích thước ảnh, System.Drawing.Printing Thực hiện in; cung cấp những đối tượng giao tác với printer System.Drawing.Text Thực hiện vẽ với các font.
  6. Đối tượng Graphic  Đây là đối tượng quan trọng của GDI+  Mọi thao tác vẽ đều thực hiện trên đối tượng Graphic này  Bất kì lớp control nào cũng đều có thuộc tính Graphic dùng để vẽ chính nó  Có 2 cách truy xuất  Sự kiện Paint  Hàm CreateGraphic(): Ảnh vẽ sẽ mất đi khi Form được Reload
  7. Đối tượng Graphic Danh sách các hàm vẽ Tên Mô tả Clip Thiết lập vùng vẽ Clear(Color) Tô toàn bộ vùng vẽ với màu Color DrawCurve Vẽ đường uốn con nối liền tập điểm DrawEclipse Vẽ hình Eclipse DrawIcon Vẽ biểu tượng Icon DrawRectangle Vẽ hình chữ nhật DrawArc Vẽ hình tròn theo độ
  8. Ví dụ  Vẽ hình Eclipse
  9. Ví dụ Vẽ Icon
  10. Ví dụ Vẽ hình tròn (DrawArc)
  11. Đối tượng Graphic Danh sách các hàm tô màu Tên Mô tả FillRectangle Tô màu hình chữ nhật FillEclipse Tô màu hình eclipse FillRegion Tô màu một vùng vẽ FillPolygon Tô màu hình tạo bởi tập điểm FromHDC Lấy device context của graphic ReleaseHDC Giải phóng device context
  12. System.Drawing  Cung cấp những chức năng, kiểu đối tượng tham gia vẽ cơ bản  Để sử dụng các đối tượng vẽ nâng cao, ta sẽ dùng System.Drawing.Drawing2D, System.Drawing.Imaging và System.Drawing.Text Pen, Pens Brushes Graphic Object FontFamily TextureBrush Bitmap SolidBrush
  13. Pen  Dùng Pen có sẵn thông qua Pens  Pens.AliceBlue  Pens.Aqua  Pens.Black  Pens.Brown   Dùng Pen do tự tạo thông qua lớp Pen  new Pen(Brush)  new Pen(Color)  new Pen(Color, Width)
  14. Brush  Dùng Brush tự có  Brushes.Lavendar  Brushes.Ivory  Brushes.LightBlue  TextureBrush: dùng ảnh image để vẽ  SolidBrush:Tạo cọ với màu đơn sắc
  15. Ví dụ TextureBrush
  16. Ví dụ SolidBrush
  17. Ví dụ DrawString
  18. System.Drawing.Drawing2D  Cung cấp các lớp cho phép vẽ nâng cao đối với ảnh vẽ Vecto hoặc 2 chiều GraphicsPath LinearGradientBrush Graphic Object HatchBrush PathGradientBrush Blend RegionData
  19. Ví dụ GraphicsPath
  20. Ví dụ LinearGradientBrush
  21. Blend  Blend & Position:  Blend có giá trị từ 0.0f đến 1.0f. Tại điểm Position, điểm màu sẽ được tạo bởi % màu bắt đầu và % màu kết thúc
  22. Ví dụ Multi-Color Blend
  23. Ví dụ Multi-Color Blends
  24. Ví dụ HatchBrush
  25. Kĩ thuật di chuyển ảnh Sử dụng Timer & sự kiện Paint
  26. Timer  Namespace: System.Timers.Time  Định khoảng thời gian 1 hàm sẽ được hệ điều hành gọi lại để thực thi  Sự kiện:  Tick: Khai báo hàm xử lý sự kiện Tick sau 1 khoảng Interval  Thuộc tính:  Interval: Cho biết khoảng thời gian mà sự kiện Tick được gọi (milisecond)
  27. Ví dụ:
  28. Invalidate  Hành động Invalidate dùng để thực hiện vẽ lại Form hoặc 1 vùng nào đó trên Form.  Sử dụng hàm : Invalidate  .Invalidate (Rectangle, bInvalidateChildren)  .Invalidate (Region, bInvalidateChildren)
  29. Kĩ thuật chống Flicker  Khi sự kiện Paint được gọi, mọi đối tượng sẽ được vẽ trực tiếp trên Device Context (đối tượng Graphics). Điều này sẽ gây hiện tượng flicker trong 3 trường hợp sau:  Resize màn hình hoặc user control  Animation (Kĩ thuật Timer + Thay đổi tọa độ đối tượng vẽ)  Drag & Drop 1 đối tượng
  30. Kĩ thuật chống Flicker Cách 1: Trong sự kiện Load của Form ta chèn đoạn code sau
  31. Kĩ thuật chống Flicker Cách 2: 1/ Override lại sự kiện vẽ ảnh nền mặc định của Window để không thực hiện vẽ ảnh nền vì nó sẽ được vẽ trên MemDC 2/ Vẽ ảnh lên 1 Bitmap trước; sau đó mới vẽ vào DC Thay vì vẽ trực tiếp trên Device Context, ta sẽ vẽ vào 1 vùng nhớ đệm (double buffer). Khi mọi thao tác vẽ trên vùng đệm xong, ta mới vẽ vào Device Context