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

52 1.4K 2
Đồ án Csharp chươg trình Paint + Source

Đ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

ĐẠ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 Danh sách nhóm thực hiện: Trần Đình Đoàn 08520534 Nguyễn Viết Nguyên 08520569 Lê Đức Thông 08520598 Nguyễn Đông Nguyên 08520261 Vũ Thanh Long 08520562 Tp.HCM,ngày 14 tháng 6 năm 2010 Tp.HCM,ngày 14 tháng 6 năm 2010 1 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 ……………………………………………………………………13 ……………………………………………………………………13 ………………………………………………………………14  ………………………………… 16 ………………………………….………………………….16  !! ……………………………………….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 2 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 "#$%&'()"#$*$+#',"#- ""#$'.+'/0('12'/034 5"*5*)676'$8+#',9$*5,(* :/)13,;< II. Cấu trúc của chương trình 1.Các thành phần chính. =>0 =?' =@0A ='0A =@' =?A =0' 2.Chức năng của các thành phần chính. >012B0(B00 C ' =DE+FG)*H' =I+FJ)13,(('.:13,+; =(KE+F"0,H'+LGM+L(E8 =N'+FB"#$ CN' =OE+FP00'G'1"H"H =QE+F+,"RG'1"HO =B>0S'5S05SE+F;50TEU 1?' =D = =I 3 =O =Q =S @0A =@0A? A2B*$85V(059$5W =@0A A2XY(0#1,Z[5+T55(5W1G;FEU8- '0A C\$']$,(1G-8 D('51G^_B'&_J@0A?Q9(05;5`(05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 ở @0AaF;+"R!$,(1G06 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. @' 1G1'b+"R&6#1,/$,Z = =' =cCd' =d'D5D5e' CD('51G;F9bB&6+;3-f G''g5M3-hB'K1' III.Giao diện chương trình "#$+"R'b1i&hj:&'"kl'00'XmmY @''."#$12X5 1.Form chính tên là form1 !12h(n0Z  >03B0"k'0B"5# V5"0VS5O5Q  ?'>0;B_"0"'FL"H'G A0"k'EF_  lEo(#'+F_'.BBo  ?13B&_o"o$76'5o59$5` (0  AE+F8(0o  @''FL&', 4  0?''FL8+)0)57"HEo(GB' S 2.Form Help(0pc'+F'FL IV.Ý Tưởng Chính và Code 1.Ý tưởng  an0':G)'0A(E*_?B_(G"k' E''.*'."H7'"B*+;*(E*   ?G)H;B_('0A;':;/ 065;F'0F+"R:E*7'"k'E ndH(^;B_+q''g'0A;':a2 k'+q''g$("k'E*  dH(^B+LL(7r,*:'0A "#3"H'E*  lE*+"R-:1J'HdH(+"Rs7bH '0A(+"R1q0'/0"#3*1J'('D(' H(+"#1q0'/0(7B"05'5 5'5  ('(1+n0*$:E*_l(7't +"R`0'.07b%$(H'*(E*+2k'"0 G'B*+; 2.Code 3B  70          !!    M+L 5 70  ?B_(EF+q'E*U06 "k'E  (Z  (70Z  ((;B_*B+'F(0+G'E(7' "k'E'70)(;F7\uE* ((^;B_7'F'gE*;HP0B7&b0; $'.'0)"#3 #region vẽ các điểm co dãn của khung ảnh 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  (7'Z 6  ((;B_7'F0);iJE7\ u7&b0;$*+q'$G0) #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 (a == false && b == false && c == false) { a = true; form1.panel4.Cursor = System.Windows.Forms.Cursors.SizeNS; } } else if (e.Y > (y.Y - 20) && e.Y < (y.Y + 20) && e.X < (y.X + 10) && e.X > (y.X - 10)) { if (a == false && b == false && c == false) { b = true; form1.panel4.Cursor = System.Windows.Forms.Cursors.SizeWE; } } else if (e.X > z.X - 20 && e.X < z.X + 20 && e.Y < z.Y + 10 && e.Y > (z.Y - 10)) { if (a == false && b == false && c == false) { c = true; form1.panel4.Cursor = System.Windows.Forms.Cursors.SizeNWSE; } } else { form1.panel4.Cursor = System.Windows.Forms.Cursors.Default; if (form1.mousepanel4 == false) { a = false; b = false; c = false; } } } #endregion  (7Z  ((;B_+q'7"HE*-' 0F0)7'B+'/0+'/07'.+u+ #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) 7 { kiemtra(sender, e, form1); if (form1.mousepanel4 == true) { if (a == true && b == false && c == false) { form1.panel4.Cursor = System.Windows.Forms.Cursors.SizeNS; form1.ptmain.Height += e.Y - form1.ptmain.Size.Height - form1.ptmain.Location.Y; form1.panel4.Invalidate(); vekhung(form1); } if (a == false && b == true && c == false) { form1.panel4.Cursor = System.Windows.Forms.Cursors.SizeWE; form1.ptmain.Width += e.X - form1.ptmain.Size.Width - form1.ptmain.Location.X; form1.panel4.Invalidate(); vekhung(form1); } if (a == false && b == false && c == true) { form1.panel4.Cursor = System.Windows.Forms.Cursors.SizeNWSE; 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; form1.panel4.Invalidate(); vekhung(form1); } } } #endregion 1  ?B_f-)E*_"k'E* "H7'+"06E*dH(G/060 _5;F+q'+"R7"H'0F+"R  (Z  (Z((;B_Gv06 '0A(*70'0A+;+2k'"0&'L 57"H"#306E*(1'b #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) { 8 if (e.X > form.mousedownptmain.X) { poinptve.X = form.mousedownptmain.X; rec.Width = e.X - form.mousedownptmain.X; } else { poinptve.X = e.X; rec.Width = form.mousedownptmain.X - e.X; } if (e.Y > form.mousedownptmain.Y) { poinptve.Y = form.mousedownptmain.Y; rec.Height = e.Y - form.mousedownptmain.Y; } else { poinptve.Y = e.Y; rec.Height = form.mousedownptmain.Y - e.Y; } rec.Location = poinptve; poinptve.X = rec.Location.X - 5; poinptve.Y = rec.Location.Y - 5; form.ptve.Location = poinptve; form.ptve.Width = rec.Width + 10; form.ptve.Height = rec.Height + 10; Rectangle tam = new Rectangle(); Point tam2 = new Point(); tam2.X = rec.X - 5; tam2.Y = rec.Y - 5; tam.Location = tam2; tam.Width = rec.Width + 10; tam.Height = rec.Height + 10; if (rec.Width > 4 && rec.Height > 4) { form.ptve.Image = new Bitmap(form.ptve.Width, form.ptve.Height); 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); } } } #endregion  (7'E+F7'F0);(EE+F7\ 9 uDb0;$+q'$G0) public 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 (a == false && b == false && c == false) { a = true; form.ptve.Cursor = System.Windows.Forms.Cursors.SizeNS; } } else if (e.Y > (form.ptve.Height / 2) - 5 && e.Y < (form.ptve.Height / 2) + 5 && e.X > (form.ptve.Width-5)) { if (a == false && b == false && c == false) { b = true; form.ptve.Cursor = System.Windows.Forms.Cursors.SizeWE; } } else if (e.X > form.ptve.Width - 5 && e.Y > form.ptve.Height - 5) { if (a == false && b == false && c == false) { c = true; form.ptve.Cursor = System.Windows.Forms.Cursors.SizeNWSE; } } else { form.ptve.Cursor = System.Windows.Forms.Cursors.Default; if (form.mouseptve == false) { a = false; b = false; c = false; } } }  (7E+F+q'7"H'01(wh: 06'0A public void keo(object sender, MouseEventArgs e, Form1 form, pen ptmain) { kiemtra(sender, e, form,ptmain); Rectangle tam = new Rectangle(); Point tam2 = new Point(); tam2.X = rec.X - 5; 10 [...]... form.ptve.Location.Y ; if (form.mouseptve==true && a==false && b==false && c==false) { y.X += (e.X - form.mousedownptve.X); y.Y += (e.Y - form.mousedownptve.Y); form.ptve.Location = y; y.X=form.ptve.Location.X - form.ptmain.Location.X; y.Y=form.ptve.Location.Y - form.ptmain.Location.Y; y.X = form.ptve.Location.X + 5; y.Y = form.ptve.Location.Y + 5; rec.Location = y; Rectangle tam = new Rectangle(); Point tam2 = new... để 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); } private void mousedown_pt(object sender, MouseEventArgs e) { textBox1.Visible... ttext.Checked || tracmau.Checked) { ptve.Visible = false; pe.vehinh(this, dr.rec); } } private void mousemove_pt(object sender, MouseEventArgs e) { if ((e.X > mousedownptmain.X + 4 || e.Y > mousedownptmain.Y + 4 || e.X + 4 < mousedownptmain.X || e.Y + 4 < mousedownptmain.Y) && mouseptmain) { if (tlaymau.Checked == false && tmouse.Checked == false && tracmau.Checked == false && txoa.Checked == false) { ptve.Visible...tam2.Y = rec.Y - 5; tam.Location = tam2; tam.Width = rec.Width+ 10; tam.Height = rec.Height+ 10; if (form.mouseptve) { if (a == true && b == false && c == false) { form.ptve.Cursor = System.Windows.Forms.Cursors.SizeNS; form.ptve.Height =x.Y + (e.Y - form.mousedownptve.Y); rec.Height = form.ptve.Height-10; if (form.ptve.Width > 0 && form.ptve.Height >... if(form.ttamgiac.Checked) Name="Tam Giác"; if(form.ttamgiacvuong.Checked) if(form.tthoi.Checked) Name="Hình Thoi"; if(form.tsao4canh.Checked) Name="Sao Bốn Cánh"; if(form.tsao5canh.Checked) Name="Sao Năm Cánh"; if(form.tsao6canh.Checked) Name="Sao Sáu Cánh"; if(form.tngugiac.Checked) Name="Ngũ Giác"; if(form.tlucgiac.Checked) Name="Lục Giác"; if(form.tset.Checked) Name="Hình Tia sét"; if(form.thttron.Checked)... 2, form.ptve.Width, form.ptve.Height - 2); } } if (a == false && b == false && c == true) { form.ptve.Cursor = System.Windows.Forms.Cursors.SizeNWSE; form.ptve.Height = x.Y + (e.Y - form.mousedownptve.Y); form.ptve.Width = x.X + (e.X - form.mousedownptve.X); 11 form.ptve.Height); rec.Height = form.ptve.Height-10; rec.Width = form.ptve.Width-10; if (form.ptve.Width > 0 && form.ptve.Height > 0) { form.ptve.Image... = form.ptve.Location.Y + 5; rec.Location = y; Rectangle tam = new Rectangle(); Point tam2 = new Point(); tam2.X = rec.X - 5; tam2.Y = rec.Y - 5; tam.Location = tam2; tam.Width = rec.Width+ 10; tam.Height = rec.Height+ 10; if (form.ptve.Width > 0 && form.ptve.Height > 0) { form.ptve.Image = new Bitmap(form.ptve.Width, form.ptve.Height); Graphics g = Graphics.FromImage(form.ptve.Image); Pen t = new Pen(Color.Black,... hết các thao tác vexcuar người dùng đồng thời là lớp trung gian của các lớp khác       d.Tool.cs  Hàm : Hàm vekeo() có tác dụng thay đổi kích thước của pen.Image khi kích thước củ vùng vẽ chính bị thay đổi Hàm laymau() có tác dụng lấy thông số màu tại một điểm làm màu chính khi vẽ Hàm vehinh() hàm này là hàm thực hiện hầu hết các thao tác vẽ của người dùng đồng thời lưu toàn bộ các thao tác... mousemuveptmain.X = e.X; mousemuveptmain.Y = e.Y; mouse.X = e.X; mouse.Y = e.Y; pe.vehinh(this, dr.rec); } panel4.Cursor = System.Windows.Forms.Cursors.Default; toolStripStatusLabel5.Text = e.X.ToString() + "," + e.Y.ToString(); 19 } private void mouseup_pt(object sender, MouseEventArgs e) { mouseptmain = false; if (ttext.Checked || tmouse.Checked || txoa.Checked || tracmau.Checked) { pe.vehinh(this, dr.rec);... Graphics.FromImage(pe.luu.sd[pe.luu.n].saveim); f.DrawImage(image, 0, 0); pe.luu.sd[pe.luu.n].vepen = 3; pe.luu.sd[pe.luu.n].size = new 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; 20 } } break; case DialogResult.No: pe.Image = new Bitmap(557, 408); pe.luu.n = 0; if (openFileDialog1.ShowDialog() == DialogResult.OK) { file = new FileInfo(openFileDialog1.FileName); . 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. ĐẠ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 Danh sách nhóm thực hiện: Trần Đình Đoàn 08520534 Nguyễn

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

Mục lục

  • A.Mở đầu

    • 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

      • a.Menu bao gồm các menu và các menu con sau

      • +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

      • +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 ý

      • Bao gồm các tool vẽ hình học,fill màu,cắt hình,…

      • Bao gồm 28 màu cơ bản:Xanh,đỏ,tím,vàng,…(bạn có thể tùy ý chọn lựa)

      • -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

      • Cho bạn biết được thông số cơ bản về hình ảnh :

      • +Location(Name,Netve,With)

      • -Ngoài ra,bạn có thể sắp sếp các thông số đó theo thứ tự phân loại(Categorized),hoặc thứ tự chữ cái(Alphabetical)

      • 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

Tài liệu cùng người dùng

Tài liệu liên quan