1. Trang chủ
  2. » Luận Văn - Báo Cáo

thuyết mình chương trình.doc

33 576 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 319,5 KB

Nội dung

thuyết mình chương trình

Trang 1

CHƯƠNG III : THUYẾT MINH CHƯƠNG TRÌNH

I- TỔNG QUAN VỀ CHƯƠNG TRÌNH :

Nghiên cứu để thiết kế hệ thống chương trình tạo hoa văn.

dựng chương trình từ các cung vẽ đơn lẻ Các cung vẽ này sẽ đựơc sắp xếp lại với nhau tạo thành một hoa văn đẹp mắt.

điểm thêm hình vẽ Tuy nhiên màu sắc thể hiện ở mỗi con người chúng ta đều khác nhau cho nên chương trình của chúng em không những cung cấp mầu sắc có sẵn mà còn cho phép người sử dụng những mầu tự định nghĩa.

tránh khỏi Do đó chương trình cho phép người sử dụng có thể thêm, xóa, sửa, thay đổi những thông số cho phù hợp.

trình vẽ Chính vì vậy chương trình cho phép người sử dụng có thể in ấn, hoặc lưu trữ những sản phẩm sau khi vẽ Những hình ảnh sau khi lưu cũng có thể mở ra sửa chữa lại.

và bàn phím.

quản lý một cách hệ thống, chặt chẽ để tạo dễ dàng cho sự mở rộng hệ thống và tuân theo các nguyên tắc cơ bản về lập trình.

được nhanh chóng và hiệu quả.

Trang 2

II- GIAO DIỆN VÀ CÁCH SỬ DỤNG CHƯƠNG TRÌNH:

A- Giao diện chương trình:

Chúng em sẽ trình bày giao diện về chương trình theo mô hình như sau :

Chương trình này có giao diện giống như bao chương trình ứng dụng khác chạy trên môi trường Windows Nó gồm có một hệ thống Menu, thanh Toolbar, thanh Status Bar, và một vùng vẽ có thanh cuộn ngang và thanh cuốn dọc để cho người sử dụng di chuyển trên vùng vẽ, để thực hiện các thao tác vẽ một cách dễ dàng.

Trang 3

1 - Hệ thống Menu:

Menu chương trình gồm có các mục thành phần chính sau:

1.1- Menu File:

+ New: Mở một trang vẽ mới, khi user không muốn vẽ trên trang hiện hành nữa (Dùng bàn phím có thể bấm tổ phím Ctrl + N).

+ Open :Mở một trang vẽ đã có sẵn đã được lưu trên đĩa mà user đã tạo ra trước đó (Hoặc dùng phím Ctrl + O).

+ Close :Đóng trang vẽ hiện tại mà user đang dùng.

+ Save :Lưu trang vẽ hiện hành lên đĩa.(Dùng phím Ctrl + S)

+ Save As :Lưu trang vẽ hiện hành lên đĩa được quyền đặt tên file lại + Print :In trang vẽ hiện hành ra máy in.

+ Print Preview : Xem trước số trang in.

+ Print Setup : Thiết lặp các thuộc tính cho máy in và trang in + Recent File : Mở lại các file trang in đã mở trước

+ Exit : Thoát khỏi ứng dụng Trở về màn hình Windows.

1.2 - Menu Edit:

+ Cut :Cắt hình vẽ đang được chọn, lưu vào Clipboar(Dùng Ctrl + X)

+ Copy :Sao chép hình vẽ, hoặc một số hình vẽ đang được chọn, lưu vào

Trang 4

+ Select All : Chọn tất cả hình vẽ đang có trên trang vẽ hiện hành ( Dùng Ctrl + A)

1.3 -Menu Draw:

+ HillBert : Vẽ cung HillBert đã được nêu trước đó.

+ PrimeRosette : Vẽ cung PrimeRosette (hay còn gọi là hoa hồng nguyên tố)

+ C_Curve : Vẽ cung C (giống hình chữ C)

+ Cung Rồng : Vẽ hình cung Rồng (Cũng tương tự như cung C nhưng hướng của nó thay đổi khác so với cung C)

+ PolySpirals : Vẽ cung PolySpiral Gồm có:

1.4 - Menu Color:

+ LineColor : Màu của nét vẽ ( bút vẽ) của đối tượng vẽ đang được chọn (gồm một hộp màu gồm 48 màu định sẵn và 16 màu tự pha chế tùy ý để user tự chọn).

+ FillColor : Màu nền tô của đối tượng (màu dùng cho cọ vẽ) đang được chọn (Hộp màu cũng tương tự như LineColor).

Tóm lại : Cả FillColor và LineColor đều có hộp màu như sau:

Trang 5

1.5- Menu View:

+ ToolBar : Dùng để thể hiện hoặc không thể hiện thanh toolbar + Status Bar : Dùng để thể hiện hoặc không thể hiện thanh status bar.

+ Paper Color : Dùng để định nghĩa màu nền của trang vẽ (cho user tự chọn màu nền.

1.6 -Menu Windows:

+ New Window : Tạo một cửa sổ window mới + Cascade : Thể hiện các window theo cửa sổ tầng + Tile : Thể hiện các window theo kiểu lát gạch + Arrange : Sắp xếp các window theo thứ tự + Danh sách các window đã được mở ra trước đó.

1.7- Menu Help:

Trang 6

3 - Thanh Statusbar :

Thanh này dùng để thể hiện tác vụ của Menu hoặc Toolbar khi người sử dụng nhấn trên Menu hoặc Toolbar đã chọn.

Ví dụ khi ta chọn nút New trên thanh Toolbar thì thanh Status Bar sẽ hiện ra câu thông báo là :” Create a new document “

Trang 7

B- Cách sử dụng chương trình:

1- Vẽ ra màn hình :

Để vẽ ra một hình nào đó trên Viewport (danh sách hình trên menu Draw) Đầu tiên người sử dụng kích chuột vào item nào mà mình muốn chọn trong menu Draw, hoặc nhấp lên nút biểu tượng trên thanh Toolbar Tiếp theo di chuyển chuột đến vùng vẽ ( trang vẽ) và click trái chuột, một hộp đối thoại dialog hiện ra yêu cầu người sử dụng nhập vào một số thông số cần thiết có liên quan đến việc vẽ hình Sau khi nhập vào đầy đủ các yêu cầu thông số về đối tượng hình vẽ đó nhấp nút OK thì đối tượng hình vẽ được vẽ ra trên vùng làm việc.

Ví dụ : Muốn vẽ cung PrimeRosette ( hoa hồng nguyên tố ) thì chúng ta kích chuột vào menu Draw, chọn tiếp item PrimeRosette bằng cách nhấp nút chuột trái lên item PrimeRosette( hoặc chọn biểu tượng Prime Rosset trên thanh Toolbar), di chuyển chuột đến vùng vẽ đồng thời click trái chuột xuống thì hộp đối thoại dialog hiện lên với yêu cầu nhập hai thông số là:

Sau đó nếu không có gì thay đổi thì nhấp nút OK, cung PrimeRosette được hiện ra trên vùng làm việc tại vị trí mà chúng ta click chuột xuống, nếu nhấn CANCEL tức hủy bỏ quá trình vẽ (vị trí click chuột là tâm của hình).

Việc thực hiện vẽ các đối tượng hình vẽ khác cũng tương tự như vậy.

2- Chọn đối tượng - hiệu chỉnh - sửa đổi :

- Chọn đối tượng : Khi trên trang vẽ đã có nhiều đối tượng đã được vẽ (và người

sử dụng đang ở chế độ vẽ) mà muốn ngưng việc vẽ để chọn đối tượng nào đó mà mình muốn thao tác thì trước tiên phải chọn đối tượng bằng cách vào menu Draw chọn item Select ( hoặc nhấp lên biểu tượng có hình dạng mũi tên trên thanh Toolbar) Sau đó click chuột trái vào đối tượng nào mình muốn chọn Tiếp theo thì người sử dụng có thể thực hiện các thao tác như : sao chép, di chuyển, co dãn, cắt dán

- Hiệu chỉnh - sữa đổi: Chỉ hiệu chỉnh trên từng đối tượng riêng lẻ tại một thời

điểm, chẳng hạn như :số đỉnh, bán kính (của hồng nguyên tố), bậc (còn gọi là cấp đệ quy của cung như : HilBert, cung Rồng, cung C, cung Polysprials) Để thực hiện việc hiệu chỉnh – sữa đổi thì ta tiến hành như sau:

Bước 1 : Chọn đối tượng cần hiệu chỉnh (như đã trình bày ở trên)

Trang 8

Bước 2 : Quay lên thanh Toolbar chọn đúng nút biểu tượng của đối tượng vừa được chọn ở bước 1 (lúc này đối tượng đang ở chế độ được chọn và trên thanh Toolbar nút biểu tượng bị ấn xuống ).

Bước 3 : Trở lại vùng vẽ và click phải chuột lên đối tượng đã được chọn ở

bước 1 và 2, hộp đối thoại dialog của đối tượng đó hiện lên với các thông số là các giá trị hiện thời của đối tượng Nếu đồng ý với các thay đổi vừa được chọn thì nhấn OK và ngược lại thì nhấp CANCEL.

Ví dụ: Muốn di chuyển cung PrimeRosette trên thì trước tiên ta chọn cung PrimeRosette bằng cách nhấp trái chuột Giữ nguyên trạng thái nhấn chuột đồng thời di chuyển chuột (rê chuột) tới vị trí cần di chuyển đến và thả tay ra.

Còn đối với việc cắt, dán, sao chép thì cũng thực hiện tương tự : đầu tiên ta chọn đối tượng cần thao tác và chọn các chức năng (cut, copy, paste) trên thanh ToolBar hoặc trong menu Edit hoặc dùng tổ hợp các phím như đã nêu trong trong phần menu Edit.

Ngoài chức năng chọn đơn lẻ từng đối tượng hình Chương trình còn cho phép người sử dụng chọn cùng lúc nhiều đối tượng hình vẽ bằng cách nhấn giữ

phím <Shift> và nhấn giữ nút trái chuột trên các đối tượng, hoặc có dùng chuột

kéo thành một đường bao hình chữ nhật bao trùm tất cả các đối tượng nào

mình muốn chọn Hoặc vào Menu Edit chọn Item Select All (Ctrl + A) 3- Thay đổi màu nét vẽ – màu nền:

Để thay đổi màu nét vẽ - màu cọ vẽ thì ta chọn đối tượng hình cần thay đổi và sau đó chọn menu Color Chọn tiếp item LineColor (nếu như thay đổi màu nét vẽ) hoặc chọn FillColor nếu như thay đổi màu cọ vẽ Ngoài ra ta có thể thay đổi màu nền của trang vẽ bằng cách vào Menu View chọn item Paper Color, sau đó chọn màu muốn thay đổi.

Nhấn OK , thì việc thay đổi được thực hiện.

III- TỔ CHỨC CÁC LỚP TRONG CHƯƠNG TRÌNH:

Chương trình được xây dựng bằng App Wizard, một tiện ích tạo ứng dụng tự động có sẵn của Mirosoft Visual C++ với các lựa chọn theo các bước như sau:

chương trình có khả năng giao tiếp.

Trang 9

- Bước 4: Chọn Docking toolbar, initial status bar, printing and print preview cho phép sử dụng toolbar, status bar print preview và máy in.

Ngoài những lớp do MFC tạo ra thông qua các bước trên chúng em còn tạo ra thêm một số lớp để phục vụ cho quá trình vẽ Đó là các lớp :

Sơ đồ luồng chương trình

Trang 10

Sau đây chúng em sẽ liệt kê thành phần của từng lớp, và chỉ liệt kê các biến thành viên và các hàm thành viên do chúng em tạo ra.

Quản lý toàn bộ Frame của chương trình

Lớp CDemoDoc được dẫn xuất từ lớp CDocument Có nhiệm vụ quản lý toàn bộ trang vẽ cũng như danh sách các đối tượng vẽ, mỗi khi có một biến cố như thêm hình, di chuyển hình, thay đổi kích thước hình, hay sửa đổi hình Lớp CDemoDoc có nhiệm vụ vẽ lại toàn bộ trang vẽ và Update vùng Viewport.

CDemoObjList* GetObjects() { return &m_objects; } const CSize& GetSize() const { return m_size; } void ComputePageSize();

COLORREF GetPaperColor() const { return m_paperColor; } CDemoObj* ObjectAt(const CPoint& point);

void Draw(CDC* pDC, CDemoView* pView); void Add(CDemoObj* pObj);

void Remove(CDemoObj* pObj);

Lớp này được xuất từ lớp CScrollView Nhiệm vụ chính của lớp này là xử lý các biến cố và giao tiếp với ngưới sử dụng Ví dụ để vẽ một cung người sử dụng chọn cung cần vẽ rồi click traí chuột, khi này sẽ sinh ra một thông điệp của Window là WM_ONLBUTTONDOWN, người thiết kế chương trình có nhiệm vụ đón bắt thông điệp này bằng cách phủ quyết hàm OnLButtonDown để xử lý các nhu cầu từ việc nhấn nút chuột Trong trường hợp của chúng em hàm OnLButtonDown không làm gì nhiều ngoài việc gọi hàm FindTool từ lớp

Trang 11

CDemoTool để tìm kiếm xem đối tượng nào được vẽ và gọi hàm OnLButtonDown từ lớp đó.

Ngoài ra lớp này còn có các hàm lo việc chuyển đổi tọa độ, các hàm xử lý việc chọn hình vẽ từ ToolBar, các hàm xử lý việc cắt gián và biến lưu trữ các đối tượng đã chọn để phục vụ cho viêc di chuyển, co giãn hoặc sửa đổi.

CDemoObjList m_selection; BOOL m_bActive;

static CLIPFORMAT m_cfDraw; static BOOL gtDe;

void DocToClient(CRect& rect); void DocToClient(CPoint& point); void ClientToDoc(CPoint& point); void ClientToDoc(CRect& rect);

void Select(CDemoObj* pObj, BOOL bAdd = FALSE) void SelectWithinRect(CRect rect, BOOL bAdd = FALSE) void CloneSelection()

void InvalObj(CDemoObj* pObj) void Remove(CDemoObj* pObj) BOOL ObjectAt(const CPoint& point)

void PasteNative(COleDataObject& dataObject)

Lớp này được dẫn xuất từ lớp CObject Nhiệm vụ của lớp này là quản lý các đối tượng vẽ Để vẽ ra một cung ngoài những đặc tính chung là hình dáng, bút vẽ, cọ ve õ….Lớp này còn có các lớp thừa kế từ nó như: CDemoCcurve, CDemoDragon, CDemoPoly, CDemoPolySpirals và CDemoRosset Mỗi một lớp sẽ có các biến, các hàm thành viên riêng cho việc vẽ ra cung đó.

Trang 12

enum TrackerState { normal, selected, active }

int GetHandleCount()

CPoint GetHandle(int nHandle)

CRect GetHandleRect(int nHandleID, CDemoView* pView) HCURSOR GetHandleCursor(int nHandle)

void SetLineColor(COLORREF color) void SetFillColor(COLORREF color) virtual void Draw(CDC* pDC)

void DrawTracker(CDC* pDC, TrackerState state)

virtual void MoveTo(const CRect& positon, CDemoView* pView = NULL)

Trang 13

int HitTest(CPoint point, CDemoView* pView, BOOL bSelected) virtual BOOL Intersects(const CRect& rect)

virtual void MoveHandleTo(int nHandle, CPoint point, CDemoView*

virtual void Serialize(CArchive& ar)

virtual CDemoObj* Clone(CDemoDoc* pDoc=NULL) virtual BOOL Intersects(const CRect& rect)

virtual void MoveHandleTo(int nHandle,CPoint point,CDemoView* pView=NULL)

void RecalcBounds(CDemoView* pView=NULL)

virtual void MoveTo(const CRect& position,CDemoView* pView=NULL) void PolySpirals(CDC* pDC,int radius, CPoint cent,int start_angle, int vertice)

void DrawNGon(CDC* pDC, CPoint point1[100],CPoint point2[100], int vertice)

virtual void Draw(CDC* pDC)

Trang 14

virtual void Serialize(CArchive& ar)

virtual CDemoObj* Clone(CDemoDoc* pDoc=NULL) virtual BOOL Intersects(const CRect& rect)

virtual void MoveHandleTo(int nHandle,CPoint point,CDemoView* pView=NULL)

void RecalcBounds(CDemoView* pView=NULL)

virtual void MoveTo(const CRect& position,CDemoView* pView=NULL) virtual void Draw(CDC* pDC)

- Bieán:

int d_SoBac

CPoint d_DD,d_DC

virtual void Serialize(CArchive& ar)

virtual CDemoObj* Clone(CDemoDoc* pDoc=NULL) virtual BOOL Intersects(const CRect& rect)

virtual void MoveHandleTo(int nHandle,CPoint point,CDemoView* pView=NULL)

void RecalcBounds(CDemoView* pView=NULL)

virtual void MoveTo(const CRect& position,CDemoView* pView=NULL)

virtual void Draw(CDC* pDC)

void Dragon(CDC* pDC,CPoint pos1,CPoint pos2,unsigned int order) void Dragon(CRect& rect,CPoint pos1,CPoint pos2,unsigned int order)

int Max(int x, int y, int z, int t) int Min(int x, int y, int z, int t)

- Bieán:

int c_SoBac

CPoint c_DD,c_DC

virtual void Serialize(CArchive& ar)

virtual CDemoObj* Clone(CDemoDoc* pDoc=NULL) virtual BOOL Intersects(const CRect& rect)

Trang 15

virtual void MoveHandleTo(int nHandle,CPoint point,CDemoView* pView=NULL)

void RecalcBounds(CDemoView* pView=NULL)

virtual void MoveTo(const CRect& position,CDemoView* pView=NULL) virtual void Draw(CDC* pDC)

void Ccurve(CDC* pDC,CPoint pos1,CPoint pos2,unsigned int order) void Ccurve(CRect& rect,CPoint pos1,CPoint pos2,unsigned int order) int Max(int x, int y, int z, int t)

int Min(int x, int y, int z, int t)

virtual void Serialize(CArchive& ar)

virtual CDemoObj* Clone(CDemoDoc* pDoc=NULL) virtual BOOL Intersects(const CRect& rect)

virtual void MoveHandleTo(int nHandle,CPoint point,CDemoView* pView=NULL)

void RecalcBounds(CDemoView* pView=NULL)

virtual void MoveTo(const CRect& position,CDemoView* pView=NULL) virtual void Draw(CDC* pDC)

int DIV(int x , int y) int MOD(int x , int y)

virtual CDemoObj* Clone(CDemoDoc* pDoc = NULL) virtual void Draw(CDC* pDC)

virtual void MoveTo(const CRect& position,CDemoView* pView=NULL)

Trang 16

virtual void MoveHandleTo(int nHandle, CPoint point,CDemoView* pView=NULL)

virtual void Serialize(CArchive& ar)

virtual BOOL Intersects(const CRect& rect)

void RecalcBounds(CDemoView* pView = NULL)

void Hilbert(CDC* pDC,int kind, int order,int& dx,int& dy)

void Hilbert(CRect& rect,CPoint& point,CSize size,int kind, int order) void LineRel(CDC* pDC, int x, int y,int& dx,int& dy)

int Min(int x, int y) int Max(int x, int y)

Lớp này không được thừa kế từ bất kỳ lớp nào Nó được tạo ra để giải quyết chủ yếu các hàm đón bắt chuột từ lớp CDemoView Khi nhận được tác vụ từ lớp CDemoView, nó sẽ tiến hành thao tác các lớp tương ứng trên nó Ngoài ra CDemoTool còn gọi một trong các lớp Dialog cho phép người sử dụng có thể nhập các thông số cần thiết ứng với mỗi cung vẽ Quá trình thao tác co giãn, di chuyển, hoặc chọn lựa các cung vẽ cũng được thực hiện từ lớp này Các lớp thừa kế từ CDemoTool là CPolySpiralsTool, CRossetTool, CPolyTool, CDragonTool, CCcurveTool, CHilberTool, bao gồm các hàm chủ yếu phủ quyết lại các hàm từ lớp CDemoTool

Trang 17

 Các biến thành viên : static CPtrList c_tools static CPoint c_down static UINT c_nDownFlags static CPoint c_last

static DrawShape c_drawShape DrawShape m_drawShape

enum DrawShape {selection, polyspirals, rosset, poly, dragon, Ccurve, hilbert}enum SelectMode {none, netSelect, move, size }

virtual void OnLButtonDown(CDemoView* pView, UINT nFlags, const

BOOL Check(CDemoView* pView)

Các lớp này thừa kế từ lớp CDialog bao gồm: CDlgRosset, CDlgPoly, CDlgCcurve, CDlgDragon, CDlgPolySpirals, CDlgDetai, CDlgHilber Mỗi một lớp sẽ có các biến riêng để lưu lại các giá trị do người sử dụng nhập liệu sau khi nhấn nút OK từ khung đối thoại Các hàm từ các lớp này đươc tạo ra từ Wizard khi kết nối với khung đối thoại.

Ngày đăng: 25/08/2012, 11:26

HÌNH ẢNH LIÊN QUAN

Chúng em sẽ trình bày giao diện về chương trình theo mô hình như sau: - thuyết mình chương trình.doc
h úng em sẽ trình bày giao diện về chương trình theo mô hình như sau: (Trang 2)
trên cơ sở đường tròn, nhưn gở đây hình dáng của cung quá phức tạp nên chúng em sử dụng diện tích bao quanh cung giao vơiù đối tượng rect - thuyết mình chương trình.doc
tr ên cơ sở đường tròn, nhưn gở đây hình dáng của cung quá phức tạp nên chúng em sử dụng diện tích bao quanh cung giao vơiù đối tượng rect (Trang 29)

TỪ KHÓA LIÊN QUAN

w