Bài giảng Lập trình Windows: Bài 6 - Trần Ngọc Bảo
lượt xem 4
download
Bài giảng Lập trình Windows: Bài 6 - Trần Ngọc Bảo giới thiệu đến bạn đọc những nội dung về vẽ các đối tượng trong GDI, Line, Rectangle, Circle, chọn đối tượng, di chuyển đối tượng và lưu trữ các đối tượng. Với các bạn đang học chuyên ngành Công nghệ thông tin thì đây là tài liệu tham khảo hữu ích dành cho các bạn.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình Windows: Bài 6 - Trần Ngọc Bảo
- Đại Học Sư Phạm Tp. Hồ Chí Minh Khoa Toán – Tin Học LẬP TRÌNH WINDOWS 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 = P x P − xQ y P − y Q Ax + By + C = 0 A = yP – yQ Q B = xQ – xP 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 P x P ≤ xM ≤ x Q y P ≤ yM ≤ y Q Ax M + By M + C =0 Q A2 + B 2 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ε Q A2 + B 2 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 LineEquation(P,Q,A,B,C); M =0 double kc = abs(A*M.x+B*M.y+C)/sqrt(A*A+B*B); return int(kc); A + B2 2 } 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
-
Bài giảng Lập trình Windows bằng C Sharp (C#) - GV. Nguyễn Thành Chiến
38 p | 232 | 70
-
Bài giảng Lập trình Windows - Phạm Ngọc Hưng (ĐH Bách Khoa)
312 p | 234 | 54
-
Bài giảng Lập trình Window: Chương 6 - Phan Trọng Tiến
35 p | 167 | 20
-
Bài giảng Lập trình Windows - Chương 3: Lập trình giao diện
196 p | 103 | 18
-
Bài giảng Lập trình Windows - Chương 1: Tổng quan lập trình Windows (2016)
6 p | 153 | 8
-
Bài giảng Lập trình Windows - Phạm Ngọc Hưng
84 p | 107 | 8
-
Bài giảng Lập trình Windows Phone (Module 2): Bài 1 - Trần Duy Thanh
58 p | 97 | 8
-
Bài giảng Lập trình Windows: Bài 9 - Trần Ngọc Bảo
26 p | 112 | 8
-
Bài giảng Lập trình Windows: Bài 4 - Trần Ngọc Bảo
86 p | 93 | 8
-
Bài giảng Lập trình Windows - Chương 3: Lập trình C++ trên Windows (2016)
16 p | 77 | 8
-
Bài giảng Lập trình Windows: Bài 2 - Trần Ngọc Bảo
71 p | 73 | 7
-
Bài giảng Lập trình Windows: Bài 5 - Trần Ngọc Bảo
55 p | 71 | 6
-
Bài giảng Lập trình Windows Phone (Module 4): Bài 8 - Trần Duy Thanh
15 p | 87 | 6
-
Bài giảng Lập trình Windows: Chương 1 - Một số khái niệm cơ bản
56 p | 126 | 6
-
Bài giảng Lập trình Windows: Bài 1 - Trần Ngọc Bảo
77 p | 102 | 6
-
Bài giảng Lập trình Windows: Bài 8 - Trần Ngọc Bảo
43 p | 86 | 3
-
Bài giảng Lập trình Windows: Bài 3 - Trần Ngọc Bảo
106 p | 74 | 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