Lập trình windows - Thư viện đồ họa GDI
lượt xem 25
download
Tài liệu tham khảo Lập trình windows giúp các bạn hiểu thêm về Thư viện đồ họa GDI và Lập trình Window là kỹ thuật lập trình sử dụng các hàm Windows API để xâ dựng các hình ứng dụng trong Windows(Windows App) và các dạng ứng dụng khác như DLL, ActiveX,...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Lập trình windows - Thư viện đồ họa GDI
- Đại Học Sư Phạm Tp. Hồ Chí Minh LẬP TRÌNH WINDOWS Khoa Toán – Tin Học Thư viện đồ họa GDI (Graphics Device Interface) Lập trình đồ họa với thư viện GDI Trần Ngọc Bảo Email: tnbao.dhsp@gmail.com
- TÌM HIỂU ỨNG DỤNG PAINT Vẽ các đối tượng trong GDI Line Rectangle Circle … Chọn đối tượng Di chuyển đối tượng Lưu trữ các đối tượng Tran Ngoc Bao 2 Dai hoc Su Pham TP.HCM
- TÌM HIỂU ỨNG DỤNG PAINT Vẽ các đối tượng trong GDI Line Rectangle Circle Chọn đối tượng Di chuyển đối tượng Lưu trữ các đối tượng Tran Ngoc Bao 3 Dai hoc Su Pham TP.HCM
- VẼ ĐỐI TƯỢNG Demo chuong trinh Paint Tran Ngoc Bao 4 Dai hoc Su Pham TP.HCM
- TÌM HIỂU ỨNG DỤNG PAINT Vẽ các đối tượng trong GDI Line Rectangle Circle Chọn đối tượng Di chuyển đối tượng Lưu trữ các đối tượng Tran Ngoc Bao 5 Dai hoc Su Pham TP.HCM
- CHỌN ĐỐI TƯỢNG Tran Ngoc Bao 6 Dai hoc Su Pham TP.HCM
- CHỌN ĐỐI TƯỢNG - ĐƯỜNG THẲNG Về mặt toán học - Đoạn thẳng được tạo bởi 2 điểm P(xP,yP),Q(xQ,yQ) - Gọi M(xM, yM) là vị trí của chuột P(xP,yP) P(xP,yP) M(xM,yM) Q(xQ,yQ) Q(xQ,yQ) Chọn đường thẳng tương đương với việc di chuyển chuột và click lên đường thẳng PQ Tọa độ M của chuột nằm trên đường thẳng PQ hay M ∈ PQ Tran Ngoc Bao 7 Dai hoc Su Pham TP.HCM
- CHỌN ĐỐI TƯỢNG - ĐƯỜNG THẲNG Về mặt toán học - Phương trình chính tắc đường thẳng PQ x − xP y − yP = x P − xQ y P − y Q P Ax + By + C = 0 A = yP – yQ B = xQ – xP Q C = xP*yQ – xQ*yP Tran Ngoc Bao 8 Dai hoc Su Pham TP.HCM
- CHỌN ĐỐI TƯỢNG - ĐƯỜNG THẲNG Về mặt toán học - Phương trình chính tắc đường thẳng PQ P Ax + By + C = 0 (d) A = yP – yQ M B = xQ – xP C = xP*yQ – xQ*yP Q Tọa độ M của chuột nằm trên đường thẳng PQ hay M ∈ PQ Khoảng cách từ M đến PQ bằng 0 Ax M + By M + C =0 A2 + B 2 Tran Ngoc Bao 9 Dai hoc Su Pham TP.HCM
- CHỌN ĐỐI TƯỢNG - ĐƯỜNG THẲNG Về mặt toán học - M thuộc đoạn PQ M thỏa 3 điều kiện sau x P ≤ xM ≤ x Q P y P ≤ yM ≤ y Q Ax M + By M + C =0 A2 + B 2 Q M Với Ax + By + C = 0 (d) là phương trình đường thẳng qua 2 điểm PQ Tran Ngoc Bao 10 Dai hoc Su Pham TP.HCM
- CHỌN ĐỐI TƯỢNG - ĐƯỜNG THẲNG Cài đặt chương trình - M thuộc đoạn PQ M thỏa 3 điều kiện sau P xmin ≤ xM ≤ xmax ymin ≤ yM ≤ ymax M Ax M + By M + C =0 ≤ε A2 + B 2 Q P Với - Ax + By + C = 0 (d) là phương trình đường thẳng qua 2 điểm PQ M - xmin = min(xP,xQ), xmax = max(xP,xQ) - ymin = min(yP,yQ), ymax = max(yP,yQ) Q Tran Ngoc Bao 11 Dai hoc Su Pham TP.HCM
- CHỌN ĐƯỜNG THẲNG - DEMO Hệ số A, B, C của phương trình đường thẳng PQ void CGDISampleView::LineEquation(CPoint point1, CPoint point2,long &A, long &B, long &C) { Ax + By + C = 0 (d) A = Q.y - P.y; A = yP – yQ B = P.x - Q.x; B = xQ – xP C = (long)P.y*Q.x - (long)P.x*Q.y; C = xP*yQ – xQ*yP } Khoảng cách từ điểm M đến đường thẳng PQ int CGDISampleView::LineDistance(CPoint M, CPoint P, CPoint Q) { long A,B,C; Ax + By M + C =0 LineEquation(P,Q,A,B,C); M A + B2 double kc = abs(A*M.x+B*M.y+C)/sqrt(A*A+B*B); 2 return int(kc); } Tran Ngoc Bao 12 Dai hoc Su Pham TP.HCM
- CHỌN ĐƯỜNG THẲNG - DEMO Kiểm tra điều kiện M ∈ PQ BOOL CGDISampleView::Between(CPoint M, CPoint P, CPoint Q) { const constDist = 5; int x1,y1,x2,y2; x2 = max(P.x,Q.x) + constDist; x1 = min(P.x,Q.x); y2 = max(P.y,Q.y) + constDist; y1 = min(P.y,Q.y); if ((M.x=x1)&&(M.y=y1)) return true; return false; } xmin ≤ xM ≤ xmax Với - xmin = min(xP,xQ), xmax = max(xP,xQ) ymin ≤ yM ≤ ymax - ymin = min(yP,yQ), ymax = max(yP,yQ) Tran Ngoc Bao 13 Dai hoc Su Pham TP.HCM
- CHỌN ĐƯỜNG THẲNG - DEMO Kiểm tra điểm M ∈ PQ BOOL CGDISampleView::ContainsInBorder(CPoint M, CPoint P, CPoint Q) { const constDist = 5; if ((Between(M,P,Q)) && (LineDistance(M,P,Q)
- CHỌN ĐƯỜNG THẲNG - DEMO Vẽ hình chữ nhật tại điểm P Vẽ hình chữ nhật tại điểm Q Tran Ngoc Bao 15 Dai hoc Su Pham TP.HCM
- CHỌN ĐƯỜNG THẲNG - DEMO void CGDISampleView::ShowSelectedLine(CPoint point) { CClientDC dc(this); CRect *ptrRect; const WIDTH = 4; int nOldMode = dc.SetROP2(R2_NOTXORPEN); CGdiObject *pOldBrush = dc.SelectStockObject(NULL_BRUSH); //Ve 2 dau cua diem chon CPoint p1,p2; p1 = ptrRect->TopLeft(); p2 = ptrRect->BottomRight(); dc.Rectangle(p1.x-WIDTH,p1.y-WIDTH,p1.x+WIDTH,p1.y+WIDTH); dc.Rectangle(p2.x-WIDTH,p2.y-WIDTH,p2.x+WIDTH,p2.y+WIDTH); dc.SelectObject(pOldBrush); dc.SetROP2(nOldMode); dc.MoveTo(ptrRect->TopLeft()); dc.LineTo(ptrRect->BottomRight()); } Tran Ngoc Bao 16 Dai hoc Su Pham TP.HCM
- CHỌN HÌNH CHỮ NHẬT RỖNG Tran Ngoc Bao 17 Dai hoc Su Pham TP.HCM
- CHỌN HÌNH CHỮ NHẬT RỖNG B Về mặt toán học M A B M A C D C D - Kiểm tra điểm M ∈ AB - Kiểm tra điểm M ∈ BC - Kiểm tra điểm M ∈ CD - Kiểm tra điểm M ∈ DA Tran Ngoc Bao 18 Dai hoc Su Pham TP.HCM
- CHỌN HÌNH TRÒN Về mặt toán học Phương trình đường tròn (C) tâm O bán kính R M(XM,YM) (x - xo)2 + (y – yo)2 = R2 (c) R M thuộc đường tròn (C) tọa độ điểm M(xM,yM) thỏa phương trình (C) O(XO,YO) (xM - xo)2 + (yM – yo)2 = R2 (c) Tran Ngoc Bao 19 Dai hoc Su Pham TP.HCM
- CHỌN HÌNH TRÒN Cài đặt chương trình Phương trình đường tròn (C) tâm O bán kính R M(XM,YM) (x - xo)2 + (y – yo)2 = R2 (c) R M thuộc đường tròn (C) tọa độ điểm M(xM,yM) thỏa phương trình (C) O(XO,YO) R2 - ε ≤ (xM - xo)2 + (yM – yo)2 ≤ R2 + ε Tran Ngoc Bao 20 Dai hoc Su Pham TP.HCM
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo Trình Lập trình Window
108 p | 391 | 158
-
Bài tập thực hành Lập trình trên môi trường Windows (Lập trình Windows Form với C#): Lab 8 - ĐH Công nghệ Tp.HCM
17 p | 304 | 52
-
Bài giảng Lập trình Windows - ĐH Hàng Hải
96 p | 211 | 41
-
Bài giảng Lập trình Window: Chương 5 - Phan Trọng Tiến
42 p | 107 | 11
-
Giáo trình Lập trình Windows 1 (Nghề: Ứng dụng phần mềm - Trình độ: Cao đẳng) - Trường Cao đẳng nghề Cần Thơ
89 p | 16 | 10
-
Bài giảng Lập trình Windows - Windows Controls
39 p | 80 | 8
-
Giáo trình Lập trình Window với C# (Ngành/Nghề: Công nghệ thông tin – Trình độ: Trung cấp) - Trường CĐ Kinh tế - Kỹ thuật Vinatex TP. HCM (2019)
80 p | 20 | 8
-
Bài giảng Lập trình Windows Visual Basic - Trường ĐHBK Hà Nội
84 p | 89 | 8
-
Giáo trình Lập trình Windows 2 (Nghề: Ứng dụng phần mềm - Trình độ: Cao đẳng) - Trường Cao đẳng nghề Cần Thơ
186 p | 27 | 7
-
Giáo trình Lập trình Windows Form (Nghề: Tin học ứng dụng - Cao đẳng) - Trường Cao đẳng Bách khoa Nam Sài Gòn (2021)
125 p | 11 | 6
-
Giáo trình Lập trình Windows (Ngành: Công nghệ thông tin - Trung cấp) - Trường Cao đẳng Thương mại và Du lịch Thái Nguyên
74 p | 12 | 6
-
Bài giảng Lập trình Windows - Trường CĐN Việt Đức Vĩnh Phúc
184 p | 46 | 6
-
Bài giảng Lập trình Windows - Streams & Files
50 p | 86 | 6
-
Bài giảng Lập trình Windows - Menu & Toolbar
42 p | 90 | 6
-
Đề thi học kỳ môn Lập trình Windows nâng cao: Đề 1
1 p | 154 | 6
-
Bài giảng Lập trình Windows: Bài 1 - Trần Ngọc Bảo
77 p | 100 | 6
-
Giáo trình Lập trình Windows Form (Nghề: Tin học ứng dụng - Cao đẳng) - Trường Cao đẳng Bách khoa Nam Sài Gòn (2023)
125 p | 15 | 6
-
Đề thi học kỳ môn Lập trình Windows nâng cao: Đề số 1 - Trường CĐ Kỹ thuật Cao Thắng
1 p | 119 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn