Đề tài Lập trình ứng dụng vẽ đơn giản mô phỏng MS Paint

I. Giới thiệu

Đây là chương trình mô phỏng MS_Paint của window và có thêm một số

tính năng khác biệt, được viết hoàn toàn bằng C#.Net.

II. Chức năng

1. Chức năng hiện có

- Vẽ bút chì.

- Vẽ đoạn thẳng.

- Vẽ curve.

- Vẽ hình chữ nhật và các hình tương tự: elip, đa giác, ngôi sao, mũi tên,

- Thay đổi màu và độ dày, di chuyển, resize hình đang vẽ.

- Cắt ảnh (giống chức năng Select của MSPaint).

- Pick Color.

- Tẩy.

- Chèn chữ vào ảnh.

- In ngày tháng.

- Quay 90, 180, 270 độ.

- Undo, Redo.

- Hoạt động theo tab (giống Firefox).

- Open, Save, kéo thả file ảnh vào khung vẽ hiện tại.

pdf9 trang | Chia sẻ: luyenbuizn | Lượt xem: 1885 | Lượt tải: 0download
Nội dung tài liệu Đề tài Lập trình ứng dụng vẽ đơn giản mô phỏng MS Paint, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Xây dựng ứng dụng Painter Thông tin chi tiết liên hệ : uyvq@bkindex.com or haind@bkindex.com Page 1 Lập trình Advance Painter Đề tài: Lập trình ứng dụng vẽ đơn giản mô phỏng MS Paint. Thực hiện bởi nhóm : Nguyễn Đức Hải Hà Trọng Sỹ Vũ Quốc Uy Xây dựng ứng dụng Painter Thông tin chi tiết liên hệ : uyvq@bkindex.com or haind@bkindex.com Page 2 Muc lục Muc lục ................................................................................................................ 2 I. Giới thiệu ......................................................................................................... 3 II. Chức năng ....................................................................................................... 3 1. Chức năng hiện có........................................................................................ 3 2. Chức năng chưa hoàn thành ......................................................................... 3 III. Giao diện ....................................................................................................... 4 IV. Mã nguồn ...................................................................................................... 4 1. Painter.cs ...................................................................................................... 4 2. DrawTool ..................................................................................................... 4 3. PencilTool .................................................................................................... 5 4. Eraser ........................................................................................................... 5 5. LineTool ....................................................................................................... 5 6. RectangleBoundTool: .................................................................................. 6 7. CurveTool, PolygonTool ............................................................................. 6 8. TextTool ....................................................................................................... 6 9. Các lớp còn lại ............................................................................................. 7 V. Lịch sử phát triển ............................................................................................ 7 Xây dựng ứng dụng Painter Thông tin chi tiết liên hệ : uyvq@bkindex.com or haind@bkindex.com Page 3 PAINTER I. Giới thiệu Đây là chương trình mô phỏng MS_Paint của window và có thêm một số tính năng khác biệt, được viết hoàn toàn bằng C#.Net. II. Chức năng 1. Chức năng hiện có - Vẽ bút chì. - Vẽ đoạn thẳng. - Vẽ curve. - Vẽ hình chữ nhật và các hình tương tự: elip, đa giác, ngôi sao, mũi tên, … - Thay đổi màu và độ dày, di chuyển, resize hình đang vẽ. - Cắt ảnh (giống chức năng Select của MSPaint). - Pick Color. - Tẩy. - Chèn chữ vào ảnh. - In ngày tháng. - Quay 90, 180, 270 độ. - Undo, Redo. - Hoạt động theo tab (giống Firefox). - Open, Save, kéo thả file ảnh vào khung vẽ hiện tại. 2. Chức năng chưa hoàn thành - Resize panel / hình. - Croping drawing: Vẽ trong 1 region xác định. - Thay đổi dạng đường viền và bề mặt của shape (outline & fill). - Tô màu. - Phóng to, thu nhỏ. - Select theo nhiều dạng hình khác nhau. - Vẽ bằng chuột phải. Xây dựng ứng dụng Painter Thông tin chi tiết liên hệ : uyvq@bkindex.com or haind@bkindex.com Page 4 - Rotate, Copy, Paste ảnh/hình đang vẽ. III. Giao diện - Dùng thư viện DevExpress để hỗ trợ việc thiết kế giao diện. - Người dùng có thể tùy chọn skin trong các giao diện có sẵn. IV. Mã nguồn Gồm các class sau: - Painter: Form chính. - DrawTool: Lớp các công cụ vẽ (lớp cha của các lớp còn lại). - PencilTool: Vẽ bằng bút chì. - LineTool: Vẽ đoạn thẳng. - RectangleBoundTool: Lớp vẽ các hình có khung chữ nhật. - CurveTool, RectangleTool, EllipTool, PolygonTool, DiamonTool, UpArrowTool, DownArrowTool, LeftArrowTool, RightArrowTool, Eraser, SixStarTool, FiveStarTool, FourStarTool, HexagonTool, PentagonTool, RightTriangleTool, TriangleTool, TextTool, SelectTool: Kế thừa lớp RectangleBoundTool, thực hiện các chức năng tương ứng với tên lớp. Mô tả khái quát 1. Painter.cs Mỗi tab có khung vẽ là 1 Panel màu trắng, kèm theo là 1 Bitmap cùng kích thước với panel. Bitmap dùng để lưu ảnh đang có trên panel (khi repaint panel không lưu được ảnh). Mỗi tab có một List các Bitmap để lưu quá trình vẽ, dùng cho chức năng Undo, Redo. Lưu ý là khi vẽ shape thì nút Redo sẽ enable, cho thấy là shape chưa hoàn tất và có thể thay đổi màu / độ dày, khi đó nếu click nút Redo thì shape sẽ chính thức hoàn tất. 2. DrawTool Xây dựng ứng dụng Painter Thông tin chi tiết liên hệ : uyvq@bkindex.com or haind@bkindex.com Page 5 Có hàm tạo với tham số truyền vào là panel, Bitmap và Pen (lưu màu và độ dày bút vẽ) hiện tại trên form. Chức năng vẽ hình được thực hiện bằng cách handle các sự kiện MouseDown, MouseUp, MouseMove. Phương thức RefreshTool dùng để khởi tạo lại DrawTool khi Panel và Bitmap thay đổi. Phương thức EndShape để kết thúc hình đã vẽ dở (nếu hình chưa kết thúc thì có thể thay đổi màu và độ dày). Phương thức Cancel để hủy hình đang vẽ và khởi tạo lại DrawTool. Phương thức DrawToPanel dùng kỹ thuật Double buffering để hình trên Panel khi đang vẽ không bị nhấp nháy. Phương thức DrawToBitmap: lưu hình vào Bitmap, chính thức hoàn thành hình vẽ. Ngoải ra còn có một số hàm hỗ trợ khác. 3. PencilTool Kế thừa trực tiếp từ DrawTool, thực hiện chức năng vẽ theo đường đi của con trỏ chuột. Có 1 trường thuộc kiểu GraphicsPath để lưu nét vẽ, dùng để vẽ lại khi có thay đổi màu/độ dày bút vẽ. Khi MouseMove thì vẽ trực tiếp lên Panel (không dùng double buffering) để đảm bảo tốc độ vẽ. 4. Eraser Kế thừa PencilTool. Tạo một Pen mới màu trắng để không ảnh hưởng đến Pen truyền vào. 5. LineTool Kế thừa DrawTool. Có thể thay đổi vị trí 2 mút của đoạn thẳng / tịnh tiến cả đoạn. Xây dựng ứng dụng Painter Thông tin chi tiết liên hệ : uyvq@bkindex.com or haind@bkindex.com Page 6 6. RectangleBoundTool: Có hầu hết các method cho việc vẽ hình có bao chữ nhật. Các lớp con nếu không có đặc điểm gì đặc biệt (không phải là curve hay polygon,…) thì chỉ cần override hàm DrawShape để vẽ hình tương ứng (elip, hình chữ nhật, ngôi sao,…). Các bước vẽ: Khi MouseDown, kiểm tra chế độ làm việc (vẽ, resize, move?) dựa vào vị trí của con trỏ chuột rồi gọi các hàm tương ứng khi MouseMove và MouseUp. Sau khi MouseUp tạo 1 hình mới (MouseUp khi chế độ được chọn là “vẽ”) thì vẽ khung hình chữ nhật bao quanh hình để tiện resize/move. 7. CurveTool, PolygonTool Kế thừa RectangleBoundTool. Có thêm các trường để lưu tọa độ các điểm, lưu hình sau khi đã xác định được tất cả các điểm (cần lưu để khi resize không bị mất hình). Override Phương thức EndShape để thực hiện việc đóng hình vẽ nếu chưa xác định được hết tọa độ các điểm. Khi resize, tọa độ các điểm được tính theo tỷ lệ để hình mới giữ được dạng cũ. 8. TextTool Kế thừa RectangleBoundTool. Có thêm các trường để lưu font, bút vẽ, tạo một richtextbox để nhập text, các biến xử lý tự động resize. Cách vẽ: đầu tiên tạo ra một textbox để nhập text, sau đó lấy dữ liệu text đó dùng hàm DrawString để vẽ lên panel đúng tại vị trí ta nhập text. Xử lý hàm: Hàm DrawText: xử lý text trong richtextbox để vẽ ra panel. Hàm DrawShape: tạo mới một ô richtextbox để nhập text. Bắt sự kiện TextChanged để xử lý auto resize box. Xây dựng ứng dụng Painter Thông tin chi tiết liên hệ : uyvq@bkindex.com or haind@bkindex.com Page 7 Override hàm EndShape để gọi hàm vẽ text và xóa richtextbox đi. 9. Các lớp còn lại Kế thừa RectangleBoundTool. Thực hiện chức năng vẽ các hình có bao chữ nhật. V. Lịch sử phát triển Phiên bản đầu tiên do Vũ Quốc Uy làm, thời điểm 22 Tháng ba 2011. Chức năng còn rất đơn giản đó là vẽ được lên bitmap. Phiên bản 2 do Nguyễn Đức Hải làm có hệ thống hơn, các chức năng đầy đủ hơn nhiều so với phiên bản 1 thời gian 3 tháng 6 năm 2011. Xây dựng ứng dụng Painter Thông tin chi tiết liên hệ : uyvq@bkindex.com or haind@bkindex.com Page 8 Sau đó phải đến tháng 11-2011 Paint được phát triển tiếp, và lần này được thực hiện chung bởi nhóm sinh viên Nguyễn Đức Hải, Vũ Quốc Uy và Hà Trọng Sỹ. Phiên bản này có thể coi là phiên bản 3.0 có rất nhiều điểm mới và nổi trội. Hình thức làm việc nhóm và tuân thủ các quy tắc trong làm việc nhóm, các công việc được chuyên môn hóa nên phần mềm Paint được “lột xác” khá nhiều. Thực hiện trong vòng 1 tháng. Xây dựng ứng dụng Painter Thông tin chi tiết liên hệ : uyvq@bkindex.com or haind@bkindex.com Page 9

Các file đính kèm theo tài liệu này:

  • pdfadvance_paint_1013.pdf
Tài liệu liên quan