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
9 trang |
Chia sẻ: maiphuongdc | Lượt xem: 2721 | Lượt tải: 2
Bạn đang xem nội dung tài liệu Đề tài Lập trình Advance Painter : 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:
- advance_paint_1013.pdf