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

Đồ án Csharp chươg trình Paint + Source

52 1,4K 2

Đ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 52
Dung lượng 231 KB

Nội dung

B.Phần Trình bày I.Giới thiệu chương trình Chương trình của chúng tôi là một chương trình vẽ hình đơn giản tương tự như chương trình Paint của hệ điều hành window bao gồm nhiều chức năn

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

-@ -ĐỒ ÁN CUỐI KỲ MÔN:LẬP TRÌNH TRÊN WINDOW.

TÊN ĐỒ ÁN:CHƯƠNG TRÌNH PAINT

Giáo Viên hướng dẫn:Ngô Thanh Hùng

Trang 2

Mục Lục

A.Mở đầu 3

B.Phần trình bày 3

I.Giới thiệu chương trình 3

II Cấu trúc chương trình 3

1.Các thành phần của chương trình .3

2.Chức năng của các thành phần chính 3

III.Giao diện chương trình 4

1.Form chính 4

2.Form Help 5

IV.Ý tưởng và code 5

1.Ý tưởng………5

2.Code(Class)……….5

a.khung.cs……… ……6

b.draw.cs………8

c.pen.cs………13

d.tool.cs………13

e.Property.cs………14

f.Help.cs (Class xử lí của form Help) ……… 16

g.SaveDraw.cs……….……….16

h.Form1.cs (class xử lí của form1) ……….17

V.Cách Sử dụng……… 50

1.Thao tác cơ bản (New ,Open,Save,Chọn công cụ )……… 50

2.Những thao tác vẻ hình……… 51

C.Kết luận ……… 52

Trang 3

A.Mở đầu

Trong môn học lập trình C trên windows chúng tôi chon đề tài paint vì chúng tôi muốn viết chương trình chỉnh sửa ảnh với nhiều tính năng mới,giao diện đẹp,dễ sử dụng hơn so với các chương trình paint hiện tại.

B.Phần Trình bày

I.Giới thiệu chương trình

Chương trình của chúng tôi là một chương trình vẽ hình đơn giản tương tự như chương trình Paint của hệ điều hành window bao gồm nhiều chức năng ,như vẽ vecto,vẽ một số khối hình học đơn giản cắt hình vẽ text,xem ảnh và vẽ trên nền một bức ảnh có sẳn.

II Cấu trúc của chương trình

+New dùng để tạo một trang vẽ mới

+Open để mở một bức ảnh và làm việc trên bức ảnh đó

+Save và Save As dùng để lưu ra ảnh với định dạng mặc định và tùy chọn +Exit để thoát chương trình.

-Edit

+Undo dùng để quay lui lại bước xử lí trước

+Redo dùng để đảo ngược lại bước Undo

+Các Menu Zoom in,Zoom out,Zoom dùng để phóng to,thu nhỏ tùy ý

b.ToolStrip

+New

+Save

+Open

Trang 4

-Cho phép trình diễn hình ảnh mà bạn lựa chọn

Ngoài ra,bạn còn sử dụng cái công cụ ở GroupBox Tool(Rắc màu,xóa,lấy màu, 1

số hình vẽ hình học cơ bản,…) Đồng thời bạn có thể lựa chọn màu sắc tùy ý bạn

ở GroupBox Color Để có được 1 hình ảnh mà bạn mong muốn

e.TextBox Sử dụng để nhập text cho công cụ vẻ text.

f.Statustrip nằm ở lề dưới của chương trình.Hiển thị kích thước hình đang vẻ,tọa độ chuột và trạng thái Zoom.

III.Giao diện chương trình

Chương trình được viết bằng ngôn ngữ C# trên môi trường Visual Studio 2008 Giao diện chương trình bao gồm 2 form,

1.Form chính tên là form1.Form1 bao gồm những thành phần sau:

 Menu chứa các menu cho người dung thao tác như new,mơ

file,lưu file Zoom,Undo,Redo.

 ToolStripMenu có tác dụng như menu nhưng hiển thị dưới dạng

Button cho người dùng dể sử dụng.

 Vùng vẻ chính là nơi để thục hiện các thao tác vẻ

 Toolbar chứa các công cụ vẻ như vẻ hình khối,vẻ text,cắt hình,lấy

màu

 ColorBar dùng để chọn màu vẻ

 PropertyGid hiển thị thông tin ảnh

Trang 5

 StatusTrip hiển thị tọa độ chuột,kích thước vùng vẻ và trạng thái

Zoom

2.Form Help(vào menu Help>Information để hiển thị form help)

IV.Ý Tưởng Chính và Code

1.Ý tưởng

 Đầu tiên ta ta tạo một PictureBox làm vùng vẽ phụ Tác dụng là tạo cho người dùng giao diện vẽ thử nghiệm trước khi dưa thao tác vẽ đó vẽ vào vùng vẽ chính.

 Ta tạo một lớp draw có tác dụng làm cho PictureBox nói trên có nền trong xuốt , có thể di chuyển được trên vùng vẽ chính khi người dùng cần Lớp này còn có tác dụng thay đổi Size của PictureBox nói trên Đồng thời thay đổi Size của hình mà người dùng vẽ

 Lớp draw này còn xác định vị trí và kích cỡ của ảnh vẽ trên PictureBox tương ứng dưới vùng vẽ chính

 Vùng vẽ chính được dựng lên bởi lớp pen Lớp này được thừa kế lớp

PictureBox và được bổ xung nhiều phương thức vẽ bởi hàm vehinh() Ngoài ra lớp này đươc bổ xung nhiều hàm khác như laymau(), velai(),vetheotoado() ,tanghinh() ,

 Hàm vehinh() này ban đầu vẽ hình trên vùng vẽ phụ Và khi nhận được dấu hiệu kết thúc thì hàm mới vẽ vào vùng vẽ chính đồng thời lưu lại thao tác vẽ đó

 Form1.cs (class xử lí của form1)

 Help.cs (Class xử lí của form Help)

 Program.cs (mặc định)

Trang 6

public void vekhung(Form1 form)

{

Graphics g = form.panel4.CreateGraphics();

Pen a = new Pen(Color.Black, 4);

x.X = form.ptmain.Location.X + form.ptmain.Size.Width / 2;x.Y = form.ptmain.Location.Y + form.ptmain.Size.Height;

y.X = form.ptmain.Location.X + form.ptmain.Size.Width;

y.Y = form.ptmain.Location.Y + form.ptmain.Size.Height / 2;z.X = form.ptmain.Location.X + form.ptmain.Size.Width;

z.Y = form.ptmain.Location.Y + form.ptmain.Size.Height;

form.Invalidate();

g.DrawLine(a, x.X + 2, x.Y + 2, x.X - 2, x.Y + 2);

g.DrawLine(a, y.X + 2, y.Y + 2, y.X + 2, y.Y - 2);

g.DrawLine(a, z.X + 2, z.Y + 2, z.X + 2, z.Y - 2);

if (form.ptmain.Width > form.panel4.Width){

form.hScrollBar1.Visible = true;form.hScrollBar1.Maximum = form.ptmain.Width - form.panel4.Width + 115;

form.hScrollBar1.LargeChange = 110;

}

if (form.ptmain.Height > form.panel4.Height){

form.vScrollBar1.Visible = true;form.vScrollBar1.Maximum = form.ptmain.Height - form.panel4.Height + 115;

form.vScrollBar1.LargeChange = 110;

}}

#endregion

 Hàm kiemtra() :

Trang 7

 Hàm này có tác dụng kiểm tra xem chuột có nằm ở vùng kéo dãn không nếu có thì xẽ thay đổi hình dạng chuột

#region kiểm tra chuột co Move vào điểm co dãn nêu có thì đổi cursors

public void kiemtra(object sender, MouseEventArgs e, Form1 form1) {

if (e.X > (x.X - 20) && e.X < (x.X + 20) && e.Y < (x.Y + 10) && e.Y > (x.Y - 10))

if (e.Y > (y.Y - 20) && e.Y < (y.Y + 20) && e.X < (y.X + 10)

&& e.X > (y.X - 10))

#region khi chuột Move vào điểm co dãn và mousedows thì khéo dãn

public void keo(object sender, MouseEventArgs e, Form1 form1)

Trang 8

form1.ptmain.Width += e.X - form1.ptmain.Size.Width - form1.ptmain.Location.X;

form1.ptmain.Height += e.Y - form1.ptmain.Size.Height - form1.ptmain.Location.Y;

#region hàm tạo hình chữ nhật và picturebox vẽ

public void taorectangle(object sender, MouseEventArgs e, Form1 form, pen ptmain)

{

if (form.mouseptmain == true)

{

Trang 9

Rectangle tam = new Rectangle();

Point tam2 = new Point();

Graphics g = Graphics.FromImage(form.ptve.Image);

Pen t = new Pen(Color.Black, 2);

g.DrawImage(ptmain.Image, 0, 0, tam, GraphicsUnit.Pixel); g.DrawRectangle(t, new Rectangle(0, 0, form.ptve.Width, form.ptve.Height));

g.DrawLine(t, form.ptve.Width / 2, form.ptve.Height - 3, form.ptve.Width / 2, form.ptve.Height);

g.DrawLine(t, form.ptve.Width - 3, form.ptve.Height / 2, form.ptve.Width, form.ptve.Height / 2);

g.DrawLine(t, form.ptve.Width - 3, form.ptve.Height - 2, form.ptve.Width, form.ptve.Height - 2);

Trang 10

dãn Nếu có thì thay đổi hình dạng con chuộtpublic void kiemtra(object sender, MouseEventArgs e, Form1 form, pen ptmain) {

if (e.X > (form.ptve.Width / 2) - 5 && e.X < (form.ptve.Width / 2)+ 5 && e.Y > form.ptve.Height-5)

if (e.Y > (form.ptve.Height / 2) - 5 && e.Y <

(form.ptve.Height / 2) + 5 && e.X > (form.ptve.Width-5))

Rectangle tam = new Rectangle();

Point tam2 = new Point();

tam2.X = rec.X - 5;

Trang 11

if (form.ptve.Width > 0 && form.ptve.Height > 0)

if (form.ptve.Width > 0 && form.ptve.Height > 0)

Trang 12

#region di chuyển picturebox

public void dichuyen(object sender, MouseEventArgs e, Form1 form,penptmain)

y.X += (e.X - form.mousedownptve.X);

y.Y += (e.Y - form.mousedownptve.Y);

Rectangle tam = new Rectangle();

Point tam2 = new Point();

Graphics g = Graphics.FromImage(form.ptve.Image);

Pen t = new Pen(Color.Black, 2);

g.DrawImage(ptmain.Image, 0, 0, tam, GraphicsUnit.Pixel);

Trang 13

g.DrawRectangle(t, new Rectangle(0, 0, form.ptve.Width, form.ptve.Height));

g.DrawLine(t, form.ptve.Width / 2, form.ptve.Height - 3, form.ptve.Width / 2, form.ptve.Height);

g.DrawLine(t, form.ptve.Width - 3, form.ptve.Height / 2, form.ptve.Width, form.ptve.Height / 2);

g.DrawLine(t, form.ptve.Width - 3, form.ptve.Height - 2, form.ptve.Width, form.ptve.Height - 2);

 Hàm velai() la hàm ve lại những thao tác vẽ được lưu trong biến luu.

 Các hàm vehinhtheotoado(), racmau() , tanghinh() la các hàm phụ chợ cho hàm vẽ hình

d.Tool.cs

 Đây là lớp khởi tạo về false của các tool trong form1.cs

public tool() { }

#region cac tool vẽ

public void refreshtool(Form1 form)

Trang 14

form.p1.BorderStyle = BorderStyle.None;

form.p2.BorderStyle = BorderStyle.None;

form.p3.BorderStyle = BorderStyle.None;

form.p4.BorderStyle = BorderStyle.None;

}

public void refreshtbd(Form1 form)

{

form.ptbd1.BorderStyle = BorderStyle.None;

form.ptbd2.BorderStyle = BorderStyle.None;

form.ptbd3.BorderStyle = BorderStyle.None;

}

public void refreshpt(Form1 form)

{

form.pt1.BorderStyle = BorderStyle.None;

form.pt2.BorderStyle = BorderStyle.None;

form.pt3.BorderStyle = BorderStyle.None;

private string name;

public string Name

{

get { return name; }

set { name = value; }

}

private Color color;

Trang 15

public Color Color

{

get { return color; }

set { color = value; }

}

private Point Location;

public Point Location1

{

get { return Location; }

set { Location = value; }

}

private int with;

public int With

{

get { return with; }

set { with = value; }

}

private int height;

public int Height

{

get { return height; }

set { height = value; }

}

private int netve;

public int Netve

{

get { return netve; }

set { netve = value; }

}

private Image image;

public Image Image

{

get { return image; }

set { image = value; }

Trang 16

public GraphicsPath path = new GraphicsPath();

public Pen p = new Pen(Color.Black, 3);

Trang 17

public Brush br = Brushes.Black;

public Image saveim = new Bitmap(557, 408);

public int vepen = 1,npoin=0;

public Rectangle rec;

public Point[] poin =new Point[100000];

public Size size;

 sự kiện chuột với pannel4 :

 Đây là nơi bắt sự kiện và thực thi thao tác làm thay đổi kích thước của vùng vẽ chính

#region sự kiện chuột với pannel4

private void panel4_MouseDown(object sender, MouseEventArgs e)

Trang 18

 Đây là nơi bắt sự kiện và thực thi việc di chuyển, thay đổi kích thước vùng vẽ thử mà vẫn giữ nền trong suốt ,…

#region sự kiện với ptve

private void ptve_MouseDown(object sender, MouseEventArgs e)

dr.kiemtra(sender, e, this, pe);

dr.keo(sender, e, this, pe);

Trang 19

}

#endregion

 sự kiện ptmain :

 Đây là vùng bắt sự kiện chính đối với vùng vẽ chính Tác dung

từ những sự kiện đó gọi các hàm vẽ hình để thực hiện thao tác vẽ của người dung

#region sự kiện ptmain

private void sukien(pen picture)

{

picture.MouseDown += new MouseEventHandler(mousedown_pt);

picture.MouseMove += new MouseEventHandler(mousemove_pt);

picture.MouseUp += new MouseEventHandler(mouseup_pt);

picture.DoubleClick += new EventHandler(doubleclick_pt);

if (tlaymau.Checked == false && tmouse.Checked == false && tracmau.Checked == false && txoa.Checked == false)

Trang 20

Size(image.Width, image.Height);

pe.luu.sd[pe.luu.n].rec = new Rectangle(0, 0, pe.Width, pe.Height);

pe.luu.n++;

pe.n = pe.luu.n;

Trang 21

}

}

break;

case DialogResult.No:

pe.Image = new Bitmap(557, 408);

Size(image.Width, image.Height);

pe.luu.sd[pe.luu.n].rec = new Rectangle(0, 0, pe.Width, pe.Height);

Trang 22

pe.luu.sd[pe.luu.n].saveim = new Bitmap(pe.Width, pe.Height);

#region các hàm filedialog mở và lưu file

private void exitToolStripMenuItem_Click(object sender, EventArgs e) {

switch (MessageBox.Show("Bạn có muốn lưu file không", "Thông Báo",MessageBoxButtons.YesNoCancel))

Trang 23

pe.Image = new Bitmap(image.Width,

Size(image.Width, image.Height);

pe.luu.sd[pe.luu.n].rec = new Rectangle(0, 0, pe.Width, pe.Height);

case DialogResult.No:

pe.Image = new Bitmap(557, 408);

Size(image.Width, image.Height);

pe.luu.sd[pe.luu.n].rec = new Rectangle(0, 0, pe.Width, pe.Height);

Trang 24

pe.luu.sd[pe.luu.n] = new savedr();

pe.luu.sd[pe.luu.n].saveim = new Bitmap(pe.Width, pe.Height);

SaveFileDialog a = new SaveFileDialog();

a.Filter = "file (*.gif)|*.gif|file (*.jpg)|*.jpg|file (*.png)|

Trang 25

switch (MessageBox.Show("Bạn có muốn lưu file không", "Thông Báo",MessageBoxButtons.YesNoCancel))

case DialogResult.No:

pe.Image = new Bitmap(557, 408);

case DialogResult.No:

pe.Image = new Bitmap(557, 408);

Trang 26

Size(image.Width, image.Height);

pe.luu.sd[pe.luu.n].rec = new Rectangle(0, 0, pe.Width, pe.Height);

case DialogResult.No:

pe.Image = new Bitmap(557, 408);

Size(image.Width, image.Height);

pe.luu.sd[pe.luu.n].rec = new Rectangle(0, 0, pe.Width, pe.Height);

Trang 27

pe.luu.sd[pe.luu.n] = new savedr();

pe.luu.sd[pe.luu.n].saveim = new Bitmap(pe.Width, pe.Height);

Trang 29

private void tlucgiac_Click(object sender, EventArgs e) {

Trang 33

private void trec_Click(object sender, EventArgs e) {

Trang 35

p1.BorderStyle = BorderStyle.Fixed3D;

but = new Pen(but.Color, ktnetve);

p2.BorderStyle = BorderStyle.Fixed3D;

but = new Pen(but.Color, ktnetve);

p3.BorderStyle = BorderStyle.Fixed3D;

but = new Pen(but.Color, ktnetve);

}

Trang 36

private void p4_Click(object sender, EventArgs e)

{

ktnetve = 12;

tl.refreshtkc(this);

p4.BorderStyle = BorderStyle.Fixed3D;

but = new Pen(but.Color, ktnetve);

 Tác vụ chính là xác định người dùng chọn tool màu nào?

#region tool màu

private void Black_Click(object sender, EventArgs e)

Trang 37

but = new Pen(color.BackColor, ktnetve);

Trang 39

but = new Pen(color.BackColor, ktnetve);

co = new SolidBrush(color.BackColor);

Trang 40

but = new Pen(color.BackColor, ktnetve);

co = new SolidBrush(color.BackColor);

}

}

#endregion

 font chữ

 Tác vụ chính là xác định người dùng chọn font chữ kiểu nào?

#region font chu

private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

font = new Font(toolStripComboBox1.Text,

int.Parse(toolStripComboBox3.Text), fontstyle, GraphicsUnit.Point, ((byte)(0)));

font = new Font(toolStripComboBox1.Text,

int.Parse(toolStripComboBox3.Text), fontstyle, GraphicsUnit.Point, ((byte)(0)));

font = new Font(toolStripComboBox1.Text,

int.Parse(toolStripComboBox3.Text), fontstyle, GraphicsUnit.Point, ((byte)(0)));

textBox1.Font = font;

}

private void toolStripButton11_Click(object sender, EventArgs e)

Trang 41

font = new Font(toolStripComboBox1.Text,

int.Parse(toolStripComboBox3.Text), fontstyle, GraphicsUnit.Point, ((byte)(0)));

10%-#region phong to thu nho

private void toolStripButton3_Click(object sender, EventArgs e) {

if (hesonhan < 30 && pe.luu.n != 0)

Ngày đăng: 06/10/2014, 19:46

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w