Lập trình C Windows 16_GDI.

37 363 3
Lập trình C  Windows 16_GDI.

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Lập trình C Windows

Lập trình C Windows Thư viện đồ họa GDI (Graphics Device Interface) Nguyễn Tri Tuấn Khoa CNTT – ĐH.KHTN.Tp.HCM Email: nttuan@ fit.hcmuns.edu.vn Nội dung  Giới thiệu  Các khái niệm  Các ví dụ vẽ hình đồ họa  Xử lý ảnh Bitmap  In ấn (Printing) C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 Giới thiệu GDI thư viện cung cấp hàm (functions) cấu trúc liệu (structures) cần thiết để ứng dụng tạo kết xuất dạng đồ họa (hiển thị lên hình, in máy in,…)  Các hàm GDI cho phép vẽ đường thẳng, đường cong, hình đa giác, xuất ký tự, hiển thị ảnh bitmap, in ấn,…  GDI không tương tác trực tiếp với thiết bị phần cứng, mà thông qua driver  C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 Các khái niệm  Thiết bị đồ họa (Graphics device)  Ngữ cảnh thiết bị (DC - Device Context)  DC MFC  Đối tượng vẽ (Drawing object)  Đối tượng vẽ MFC C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 Các khái niệm - Thiết bị đồ họa  Thiết bị đồ họa (Graphics device): thiết bị cho phép thể kết xuất dạng đồ họa ƒ ƒ  Thiết bị vật lý (physical device): thiết bị thật hình, cửa sổ, máy in,… Thiết bị “ảo” (logical device): thiết bị giả lập nhớ, cịn gọI “memory device”, có tác dụng mô thiết bị vật lý Thư viện GDI cho phép thực lệnh vẽ thiết bị vật lý lẫn logic C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 Các khái niệm - Ngữ cảnh thiết bị  Ngữ cảnh thiết bị (Device Context): cấu trúc lưu trữ thông số thiết bị đồ họa, ví dụ: ƒ ƒ ƒ ƒ Chế độ vẽ (drawing mode), Vị trí bút vẽ (pen position), Các đối tượng vẽ (Pen, Brush, Font) … Các thông số chi phối thao tác vẽ lên thiết bị thời điểm thực  Mỗi thiết bị đặc trưng cấu trúc DC  C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 Các khái niệm - Ngữ cảnh thiết bị…(tt)  Ứng dụng thực thao tác vẽ lên thiết bị thông qua DC thiết bị  DC xem phương tiện liên kết ứng dụng thiết bị, giúp tạo nên tính độc lập thiết bị (Device Independent) cho ứng dụng C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 Các khái niệm - Ngữ cảnh thiết bị…(tt) Thuộc tính Gía trị mặc định Ý nghĩa/Các hàm liên quan Background color White Màu xuất ký tự (SetBkColor) Text color Black Màu ký tự (SetTextColor) Font SYSTEM_FONT Font chữ xuất ký tự (CreateFont, CreateFontIndirect, SelectObject) Pen BLACK_PEN Bút vẽ, sử dụng vẽ đường thẳng, đường cong (CreatePen, CreatePenIndirect, SelectObject) Current Pen Position (0, 0) Tọa độ hành Pen (MoveTo, LineTo) Một số thuộc tính DC quản lý C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 Các khái niệm - Ngữ cảnh thiết bị…(tt) Thuộc tính Gía trị mặc định Ý nghĩa/Các hàm liên quan Brush WHITE_BRUSH Màu tô, sử dụng tô màu vùng kín (CreateSolidBrush, CreateBrushIndirect, CreatePatternBrush, SelectObject,…) Drawing mode R2_COPYPEN Chế độ vẽ Xác định cách phối hợp bit màu pixel có tọa độ (SetROP2) Bitmap NULL (CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, SelectObject) Một số thuộc tính DC quản lý C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 Các khái niệm - Ngữ cảnh thiết bị…(tt) Thuộc tính Gía trị mặc định Ý nghĩa/Các hàm liên quan Color Palette DEFAULT_PALETTE Bảng màu (CreatePalette, RealizePalette, SelectPalette, UnrealizeObject ) Mapping mode MM_TEXT Xác định đơn vị đo VD - MM_TEXT qui định đơn vị đo theo trục x,y pixel - MM_HIMETRIC qui định đơn vị đo theo trục x,y 0.01 milimet (SetMapMode) ……… Một số thuộc tính DC quản lý C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 10 Các khái niệm - Ngữ cảnh thiết bị…(tt)  Các loại DC: ƒ Display DC: sử dụng thao tác vẽ lên hình/cửa sổ ƒ Printer DC: sử dụng để kết xuất liệu đồ họa máy in ƒ Memory DC: tương ứng với thiết bị “logic”, thường dùng để “chuẩn bị” liệu trước hiển thị thiết bị vật lý C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 11 Các khái niệm - Ngữ cảnh thiết bị…(tt) Loại DC Các hàm liên quan Display DC BeginPaint, GetDC, GetDCEx EndPaint, ReleaseDC CreateDC DeleteDC CreateCompatibleDC DeleteDC Printer DC Memory DC Các hàm tạo lập/hủy bỏ DC C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 12 Các khái niệm - DC MFC  Các lớp liên quan đến DC CDC: lớp sở dùng để quản lý DC ƒ CPaintDC: ƒ  Dẫn xuất từ lớp CDC,  Dùng với thao tác vẽ vùng client cửa sổ  Chỉ sử dụng xử lý thông điệp WM_PAINT (hàm CWnd::OnPaint) C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 13 Các khái niệm - DC MFC…(tt)  Các lớp liên quan đến DC (tt) ƒ CClientDC:  Dẫn xuất từ lớp CDC,  Dùng với thao tác vẽ vùng client cửa sổ  Sử dụng lúc nào, ngoại trừ hàm CWnd::OnPaint ƒ CWindowDC:  Dẫn xuất từ lớp CDC,  Dùng với thao tác vẽ cửa sổ (kể vùng client non-client) C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 14 Các khái niệm - DC MFC…(tt) VD1 Vẽ CDC CDC* pDC = GetDC(); // Các lệnh vẽ … ReleaseDC(pDC); VD2 Xử lý thông điệp WM_PAINT, dùng lớp CDC PAINTSTRUCT ps; CDC* pDC = BeginPaint(&ps); // Các lệnh vẽ … EndPaint(&ps); VD3 Xử lý thông điệp WM_PAINT, dùng lớp CPaintDC CPaintDC dc(this); // Các lệnh vẽ … C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 15 Các khái niệm - DC MFC…(tt) VD4 Vẽ vùng client, dùng lớp CClientDC void CMainWindow::OnLButtonDown(UINT nFlags, CPoint point) { CRect rect; GetClientRect(&rect); CClientDC dc(this); dc.MoveTo(rect.left, rect.top); dc.LineTo(rect.right, rect.bottom); dc.MoveTo(rect.right, rect.top); dc.LineTo(rect.left, rect.bottom); } C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 16 Các khái niệm - DC MFC…(tt) Thuộc tính Gía trị mặc định Ý nghĩa/Các hàm liên quan Background color White CDC::SetBkColor CDC::GetBkColor Text color Black CDC::SetTextColor CDC::GetTextColor Font SYSTEM_FONT CDC::SelectObject Pen BLACK_PEN CDC::SelectObject Current Pen Position (0, 0) CDC::MoveTo CDC::GetCurrentPosition Drawing mode R2_COPYPEN CDC::SetROP2 CDC::GetROP2 Một số thuộc tính lớp CDC quản lý C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 17 Các khái niệm - DC MFC…(tt) Hàm Ý nghĩa MoveTo Di chuyển Pen đến vị trí LineTo Vẽ đoạn thẳng từ vị trí Pen hành đến vị trí Polyline / PolylineTo Vẽ dãy cạnh Arc / ArcTo Vẽ cung PolyBezier / PolyBezierTo Vẽ đường cong Bezier PolyDraw Vẽ đường cong Bezier cạnh nối điểm Một số hàm vẽ lớp CDC cung cấp C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 18 Các khái niệm - Đối tượng vẽ  Đối tượng vẽ (Drawing object): đối tượng chi phối thao tác vẽ bạn VD: ƒ ƒ ƒ  Đối tượng Pen chi phối thao tác vẽ đường thẳng, đường cong; Đối tượng Brush chi phối thao tác tô màu; Đối tượng Font chi phối thao tác xuất ký tự Đối tượng vẽ chứa thông tin màu sắc (color), kiểu dáng (style) C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 19 Các khái niệm - Đối tượng vẽ…(tt)  Các đối tượng vẽ cần phải tạo (Create) hay lấy từ kho (stock) để dùng ƒ ƒ Nếu tạo mới, sau dùng phải giải phóng Nếu lấy từ kho có sẵn, sau dùng khơng cần giải phóng VD1 Tạo Pen HPEN hPen1 = CreatePen(PS_SOLID, 2, RGB(255, 0, 0); VD2 Lấy Pen từ “kho” có sẵn HPEN hPen2 = (HPEN) GetStockObject(WHITE_PEN); VD3 Xố đối tượng hPen1 sau sử dụng DeleteObject(hPen1); C4W - GDI - Nguyen Tri Tuan - DH.KHTN Tp.HCM Summer 2004 20 10 ... Thu? ?c tính Gía trị m? ?c định Ý nghĩa /C? ?c hàm liên quan Background color White CDC::SetBkColor CDC::GetBkColor Text color Black CDC::SetTextColor CDC::GetTextColor Font SYSTEM_FONT CDC::SelectObject... DH.KHTN Tp.HCM Summer 2004 14 C? ?c khái niệm - DC MFC…(tt) VD1 Vẽ CDC CDC* pDC = GetDC(); // C? ?c lệnh vẽ … ReleaseDC(pDC); VD2 Xử lý thông điệp WM_PAINT, dùng lớp CDC PAINTSTRUCT ps; CDC* pDC = BeginPaint(&ps);... DC MFC…(tt) VD4 Vẽ vùng client, dùng lớp CClientDC void CMainWindow::OnLButtonDown(UINT nFlags, CPoint point) { CRect rect; GetClientRect(&rect); CClientDC dc(this); dc.MoveTo(rect.left, rect.top);

Ngày đăng: 14/11/2012, 17:00

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan