Tải bản đầy đủ (.docx) (14 trang)

ĐỀ TÀI : MÔ PHỎNG CHƯƠNG TRÌNH VẼ HÌNH PAINT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (569.69 KB, 14 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN TOÁN ỨNG DỤNG VÀ TIN HỌC
…………………………………………..

ĐỀ TÀI : MÔ PHỎNG CHƯƠNG TRÌNH VẼ
HÌNH PAINT
BÁO CÁO CHI TIẾT BÀI TẬP LỚN
Môn học: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Thầy hướng dẫn:

TS NGUYỄN THÁI BÌNH

Sinh viên thực hiện:
1
2

Lớp:

ĐINH KHÁNH HƯNG
ĐOÀN VĂN ĐOÀN
Toán Tin K57

HÀ NỘI – 2014

20111543
20121523


Lời Mở đầu


Đây là một tài liệu dùng để biểu diễn cơ bản thiết kế “Mô
phỏng trình vẽ Paint phương pháp LTHDT”. Tài liệu này giúp ta có cái
nhìn toàn vẹn về cơ cấu và cách xây dựng chương trình, cũng như
chức năng của chương trình. Do thời gian có hạn nên còn chưa đầy
đủ chức năng như chương trình Paint của MS. Tuy nhiên, những
chức năng đó sẽ được bổ sung trong thời gian sớm nhất.
Trong quá trình thiết kế và thực hiện không tránh khỏi sai xót,
mong quí thầy cô và các bạn thông cảm và có những góp ý kiến quí
báu nhằm hoàn thiện hơn cho sản phẩm.

Xin chân thành cảm ơn!

I.Giới thiệu chung


Trong xu thế phát triển công nghệ thông tin như vũ bão hiên nay, đặc biệt là trong
ngành công nghệ phần mềm ngày càng đòi hỏi trình độ cao trong kĩ thuật lập trình.
Chính vì vậy mà phương pháp lập trình hướng thủ tục cổ điển trước đây không còn
đáp ứng được nhu câu đặt ra của thời đại, một phương lập trình mới được xây dựng
theo nguyên lý Alan-Kay đươc ra đời nhằm đáp ứng nhu cầu cấp thiết đó:
“Phương pháp Lập Trình Hướng đối Tượng”. Bài tập này được thiết kế theo
phương pháp LTHDT bằng ngôn ngữ C#, ngôn ngữ này được phát triển bởi Micro
Soft dựa trên nền tảng của hai ngôn ngữ rất mạnh mẽ là C++ và Java. Chính vì thế
mà nó giải quyết được những vướng mắc gặp phải khi thết kế chương trình theo
thủ tục thuần túy:



Mã chương trình rõ ràng, dễ đọc, dễ hiểu, cô đọng
Chương trình được tổ chức thành các Class lắp ghép lai với nhau thành khối




thống nhất
Mỗi Class gồm nhiều Method đảm nhân các vai trò khác nhau trong chương




trình
Chương trình có tính mềm dẻo cao
Có khả năng tái sử dụng tài nguyên

II.Chức Năng Yêu Cầu:



Project title: demo_chuong_trinh_paint
Giới thiệu tổng quát:
Đây là một chương trình mô tả các chức năng cơ bản của chương trình vẽ
Paint của Micro Soft xây dựng, chương trình được xây dựng bằng ngôn ngữ
lập trình C# theo phương pháp Hướng Đối Tượng. Chương trình đơn giản
cung cấp các chức năng vẽ cơ bản: vẽ hình và tô màu… rất dễ sử dụng và



thân thiện với người dùng.
Các chức năng chính và chi tiết: Giao diện chương trình được xây dựng
theo kiểu “windows form”. Các menu theo kiểu đa cấp.
1. File

• New: Tạo mới 1 file(trang vẽ ) trống.





2.

Open: Mở 1 tệp tin hình ảnh có sẵn.
Save: Lưu file vào nơi mong muốn.
Exit: Thoát chương trình.

Edit

Zoom: Thực hiện phóng to hay thu nhỏ ảnh.
3. Draw đoạn thẳng: vẽ đoạn thẳng.
4. Fill hình tròn: vẽ và tô mà theo màu của cọ vẽ cho hình tròn.
5. Draw đường tròn: vẽ 1 đường tròn.
6. Fill hình chữ nhật: vẽ và tô màu của cọ vẽ cho 1 hình chữ nhật.
7. Draw hình chữ nhật: vẽ 1 hình chữ nhật rỗng.
8. Size: chon kích thươc cho chổi vẽ.
9. Chọ màu: chọn màu tô và màu vẽ cho chổi vẽ.
Yêu cầu hệ thống:
 Cấu hình máy: CPU Pentium III 650 Mhz, RAM 512, VGA 16M trở







lên.
 Hệ điều hành: Window XP trở lên.
 Yêu cầu hệ thống: Visual Studio 2008 trở lên, Framework 4.0 trở lên.
Chương trình thao tác vẽ bằng chuột.
Giới hạn đề tài:
 Do thời gian có hạn nên chưa thể làm được hết các chức năng như của
chương trình paint như: người dùng chưa thể vẽ tự do,giao diện còn
sơ sài,chưa đẹp mắt....

III.Hình ảnh minh họa và Cấu trúc chương trình:
1.

Hình ảnh minh họa:
Giao diện chính của chương trình:


Chương trình đang thực hiện vẽ:

Chương trình thực hiện lưu file:


Chương trình thực hiện mở file:


2.

Cấu trúc chương trình:
Hình ảnh chương trình được xây dựng trên Visual Studio 2010:



Chương trình được xây dựng dựa trên sự kế thừa các Class đã được xây
dựng sẵn: graphics, DrawRectangle, DrawFillelipes… vì vậy việc xây dựng
chương trình trở nên nhẹ nhàn hơn nhiều.
IV Cách xây dựng chương trình:


Cách xây dưng 1 số tính năng trong chương trình:
1- cách thiết kế giao diện
2- cách bắt sự kiện và vẽ 1 số hình cơ bản trong chương trình
3- cách thiết kế và tạo chức năng cho menu(sử dụng các Menu&Toolbar có
sẵn).
I -chúng ta thiết kế giao diện dựa trên công cụ ứng dụng winform application
và ngôn ngữ C#
-sử dụng các controls,containers,Menus&toolbars để thiết kế giao diện cho
chương trình.
Giới thiệu qua về công dụng của các controls được sử dụng trong chương
trình:
-button là 1 controls tạo ra 1 nút tương tác với người dùng, cụ thể
trong chương trình này là tạo ra các nút giúp người dùng chọn màu hay vẽ


hình, button có các thuộc tính và sự kiện khác nhau giúp người lập trình có
thể dễ ràng thao tác hay bắt sự kiện trong việc lập trình
-combobox là 1 controls tạo ra 1 hộm thoại mà khi người dùng kích
vào sẽ sổ ra 1 loạt các giá trị mà người lập trình đã cài đặt, cụ thể trong này
là kích cỡ của nét vẽ
-panel là 1 containers dùng để chứa các controls
-Menustrip là 1 Menus toolbars dùng để thiết kế me nu cho trương
trình
Do các controls,containers,Menus&toolb được thiết kế khá thân thiện nên

việc thiết kế, sử dụng là khá đơn giản chỉ việc kéo thả vào form như ý muốn
II-bắt sự kiện và vẽ
- Trước tiên để vẽ được hình VD: như đoạn thẳng chúng ta phải bắt
được sự kiện di chuột,nhấp chuột và nhả chuột và trong c# visual đã
-

hỗ chợ rất tốt
Cách vẽ hình:
Đầu tiên ta phải khai báo 2 điểm thuộc Class Point(có sẵn)
“p1”, “p2” qui định tọa độ, trong đo p1: tọa độ điểm bắt đầu
nhấp chuột, p2: tọa độ bắt đầu nhả chuột. Hai biến nguyên
“dx”, “dy” dùng để lưu chiều rộng(width) và chiều dài(height)
của các hình. Khai báo 1 biến thuộc Class Pen (pen) dùng để
làm bút vẽ ; 1 biến thuộc Class Brush(bs) dùng làm cọ vẽ và 1
biến thuộc lớp Graphics(_grs) dùng để vẽ.
Khi vẽ chúng ta cần phải lưu ảnh lại nên chúng ta sử dụng 1
biến thuộc kiểu Bitmap(_bm) để lưu ảnh.
Một số đoạn code tiêu biểu:
Hàm điều khiển vẽ:

void Form1_Paint(object sender, PaintEventArgs e)
{
Pen pen;
SolidBrush sb;
if (_isdown == true)//_isdown dùng để đánh dấu xem người dùng đang nhấp chuột
//
hay đang rê chuột.
{
int dx = _p2.X - _p1.X;
int dy = _p2.Y - _p1.Y;



switch (_currshapemode)//_currshapemode: dùng để xem người dùng muốn
vẽ //-----------------------------------------hình gì
{
case shapemode.line://vẽ đường thẳng
pen = new Pen(_currleftcolor,_currpensize);
e.Graphics.DrawLine(pen, _p1, _p2);// hàm vẽ
break;
case shapemode.fillellipse://vẽ hình elip
sb = new SolidBrush(_currleftcolor);
e.Graphics.FillEllipse(sb,_p1.X,_p1.Y,dx,dy);
break;
case shapemode.rawellipse://vẽ đường elip
pen = new Pen(_currleftcolor,_currpensize);
e.Graphics.DrawEllipse(pen, _p1.X, _p1.Y,dx,dy);
break;
case shapemode.rawrectangtle:// vẽ hình chữ nhật rỗng
pen = new Pen(_currleftcolor, _currpensize);
e.Graphics.DrawRectangle(pen, _p1.X, _p1.Y, dx, dy);
break;
case shapemode.fillrectangle:// vẽ hình chữ nhật đặc
sb = new SolidBrush(_currleftcolor);
e.Graphics.FillRectangle(sb,_p1.X,_p1.Y,dx,dy);
break;
default:
MessageBox.Show("error");
break;
}
}

}

Hàm nhấp chuột:
void Form1_MouseDown(object sender, MouseEventArgs e)
{
_isdown = true;
_p1 = new Point(e.Location.X,e.Location.Y);
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void bntchonmau_Click(object sender, EventArgs e)
{
ColorDialog cld = new ColorDialog();
cld.ShowDialog();
if (cld.ShowDialog() == DialogResult.OK)
{
if (_currbuttoncolor == buttoncolor.LEFT)
{
bntmautrai.BackColor = cld.Color;
_currleftcolor = cld.Color;
}
else
{


}
}


bntmauphai.BackColor = cld.Color;
_currrightcolor = cld.Color;

}

Hàm rê chuột:
void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (_isdown==true)
{
_p2 = new Point(e.Location.X, e.Location.Y);// lấy tọa độ cho p2
this.Refresh();
}
lbltoado.Text = e.Location.X.ToString() + "," + e.Location.Y.ToString();
}

Hàm thả chuột:
void Form1_MouseUp(object sender, MouseEventArgs e)
{
_isdown = false;
Pen pen;
SolidBrush sb;
int dx = _p2.X - _p1.X;
int dy = _p2.Y - _p1.Y;
switch (_currshapemode)
{
case shapemode.line:
pen = new Pen(_currleftcolor, _currpensize);
_grs.DrawLine(pen, _p1, _p2);
break;

case shapemode.fillellipse:
sb = new SolidBrush(_currleftcolor);
_grs.FillEllipse(sb, _p1.X, _p1.Y, dx, dy);
break;
case shapemode.rawellipse:
pen = new Pen(_currleftcolor,_currpensize);
_grs.DrawEllipse(pen, _p1.X, _p1.Y,dx,dy);
break;
case shapemode.rawrectangtle:
pen = new Pen(_currleftcolor, _currpensize);
_grs.DrawRectangle(pen, _p1.X, _p1.Y, dx, dy);
break;
case shapemode.fillrectangle:
sb = new SolidBrush(_currleftcolor);
_grs.FillRectangle(sb, _p1.X, _p1.Y, dx, dy);
break;
default:
MessageBox.Show("error");
break;
}
this.BackgroundImage = (Bitmap)_bm.Clone();


}

Ba hàm trên qui định thao tác chuột khi vẽ.
Cách lưu lại 1 ảnh khi vẽ xong:
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog sv = new SaveFileDialog();

sv.Filter = "bmp(*.bmp)|*.bmp|jpg(*.jpg)|*.jpg|png(*.png)|*.png";
if (sv.ShowDialog() == DialogResult.OK)
{
_bm.Save(sv.FileName);
}
}

Chúng ta chỉ việc tạo ra 1 biến kiểu Bitmap để lưu lại ảnh vừa vẽ.
Cách mở 1 ảnh:
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Image files (*.img;*.png;*.jpg;*.peng;*.bmp)|
*.img;*.png;*.jpg;*.peng;*.bmp";//các kiểu định dạng ảnh
if (ofd.ShowDialog() == DialogResult.OK)
{
Image img = Image.FromFile(ofd.FileName);
_bm = new Bitmap(img.Width, img.Height);
_grs = Graphics.FromImage(_bm);
Rectangle rec = new Rectangle(0,0,_bm.Width,_bm.Height);
_grs.DrawImage(img, rec);
this.Refresh();
this.BackgroundImage = (Bitmap)_bm.Clone();
}
}

NHẬN XÉT CỦA THẦY HƯỚNG DẪN

1


Mục đích và nội dung của bài tập


………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
…………….........................................................
2 Kết quả đạt được
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
…………….........................................................
3 Ý thức làm việc của sinh viên
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
……………….........................................................
Hà Nội, ngày 17 tháng 12 năm 2014
Thầy hướng dẫn
(Ký và ghi rõ họ tên)




×