Đồ Hoạ trên VC6.0(MFC)
-
Upload
gabriel-cardenas -
Category
Documents
-
view
46 -
download
0
description
Transcript of Đồ Hoạ trên VC6.0(MFC)
Đồ Hoạ trên Đồ Hoạ trên VC6.0(MFC)VC6.0(MFC)Đồ Hoạ trên Đồ Hoạ trên VC6.0(MFC)VC6.0(MFC)
GiGiảảng viên : Trng viên : Trầần Anh Tun Anh TuấấnnĐĐạại hi họọc Khoa hc Khoa họọc Tc Tựự nhiên nhiên
Quy trình làm việc với đồ hoạ
• GDI(Graphic Device Interface) hỗ trợ cho giao diện thiết bị đồ hoạ như màn hình , máy in với các công cụ như Pen , Brush , Font , Bitmap , Pallete , Region.
• DC (Device Context: Ngữ cảnh thiết bị)
Quy trình làm việc với đồ hoạ
• Có hai cách tiếp cận để hiển thị đối tượng đồ hoạ:
Khuyết điểm của cách thứ hai là: cửa sổ không tự động vẽ lại
Khuyết điểm cách thứ nhất: vẽ lại toàn bộ đối tượng đã vẽ
Các đối tượng Đồ hoạ
CClientDC dc(this);dc.MoveTo(pointA);dc.LineTo(pointB);
CClientDC dc(this)
dc.Rectangle(l,t,r,b);
CClientDC dc(this)
dc.Ellipse(l,t,r,b);
CClientDC dc(this)
dc.RoundRect(l,t,r,b,w,h);
CClientDC dc(this)
dc.PolyBezier
(aPoint,4);
Bút vẽ , chổi vẽ• Bút vẽ (CPen)• Cách dùng :
– CPaintDC dc(this);// hay CClientDC dc(this)– CPen *hpen , *hpenPrev;– hpen = new CPen(kiểu,độ rộng, màu);– hpenPrev = dc.SelectObject(hpen);– Vẽ đối tượng– delete dc.SelectObject(hpenPrev);
Bút vẽ , chổi vẽ• Bút vẽ (CPen)• Kiểu:
– PS_SOLID bút vẽ đặc– PS_DASH bút vẽ gạch– PS_DOT bút vẽ chấm– PS_DASHDOT bút vẽ chấm gạch
• Ngoài ra còn có thể tạo bút vẽ bằng :– GetStockObject , CreatePenIndirect
Bút vẽ , chổi vẽ• Chổi vẽ (CBrush)• Cách dùng:
– CPaintDC dc(this);// hay CClientDC dc(this)– CBrush *hbrush , *hbrushPrev;;– hbrush = new CBrush([kiểu,] màu);– hbrushPrev = dc.SelectObject(hbrush);– Vẽ đối tượng– delete dc.SelectObject(hbrushPrev);
Bút vẽ , chổi vẽ• Chổi vẽ (CBrush)• Kiểu:
– HS_BDIAGONAL;– HS_CROSS; – HS_DIAGCROSS;– HS_FDIAGONAL;– HS_HORIZONTAL; – HS_VERTICAL;
• Ngoài ra còn có thể tạo chổi vẽ bằng :– CreateSolidBrush , CreateHatchBrush ,
CreatepatternBrush , CreateBrushIndirect
Biến đổi toạ độ• CRect rt;• (control variable) m_v• m_v..GetClientRect(&rt)
;• m_v.ClientToScreen(&p
);• ScreenToClient(&p);