Bài giảng GDI+ - Phạm Anh Phương
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:
- bai_giang_gdi_pham_anh_phuong.ppt
Nội dung text: Bài giảng GDI+ - Phạm Anh Phương
- GDI+ GV: Phạm Anh Phương Email: paphuong@fit.hcmuns.edu.vn
- Chủ đề GDI & Device Context GDI+ Các namespace Kĩ thuật di chuyển ảnh Kĩ thuật chống flicker
- 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
- 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, .
- 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.
- Đố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
- Đố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 độ
- Ví dụ Vẽ hình Eclipse
- Ví dụ Vẽ Icon
- Ví dụ Vẽ hình tròn (DrawArc)
- Đố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
- 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
- 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)
- 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
- Ví dụ TextureBrush
- Ví dụ SolidBrush
- Ví dụ DrawString
- 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
- Ví dụ GraphicsPath
- Ví dụ LinearGradientBrush
- 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
- Ví dụ Multi-Color Blend
- Ví dụ Multi-Color Blends
- Ví dụ HatchBrush
- Kĩ thuật di chuyển ảnh Sử dụng Timer & sự kiện Paint
- 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)
- Ví dụ:
- 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)
- 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
- Kĩ thuật chống Flicker Cách 1: Trong sự kiện Load của Form ta chèn đoạn code sau
- 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