Tải bản đầy đủ (.doc) (52 trang)

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

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 (339.02 KB, 52 trang )

ĐẠ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
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 > 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, 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);
}
}
if (a == false && b == true && c == false)
{
form.ptve.Cursor = System.Windows.Forms.Cursors.SizeWE;
form.ptve.Width = x.X + (e.X - form.mousedownptve.X);
rec.Width = form.ptve.Width-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, 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);
}
}
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
rec.Height = form.ptve.Height-10;
rec.Width = form.ptve.Width-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, 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);
}
}
}

}
 ('0;B_0+q'L'0A(wh
/06'0A
#region di chuyển picturebox
public void dichuyen(object sender, MouseEventArgs e, Form1 form,pen
ptmain)
{
y.X = form.ptve.Location.X ;
y.Y = 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 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, 2);
g.DrawImage(ptmain.Image, 0, 0, tam, GraphicsUnit.Pixel);
12
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

 dH((H+"Rf-E+F-'.bBB
0"k'E+2k'(H0'BH7B
 (Z
 (7;B_+q'7"Hc7'7
"HE*1L+q'
 (0;B_`&6(0G')+'F((0
7'*
 ('((((-'.n0bBB*
"k'E+2k'"0(1)BB+;(1'b00
0)H
 ('(G'hB*+"R"01'b00
 B('505'B(_
R(*$

?
 af(H7J'G/B!
public tool() { }
#region cac tool vẽ
public void refreshtool(Form1 form)
{
form.tlaymau.Checked = false;
form.trec.Checked = false;
form.tellip.Checked = false;
form.tdagiac.Checked = false;
form.tline.Checked = false;
form.ttext.Checked = false;
form.tracmau.Checked = false;
form.tmouse.Checked = false;
form.tseclect.Checked = false;
form.tdrop.Checked = false;
form.tphai.Checked = false;
form.txuong.Checked = false;
form.tlen.Checked = false;
form.ttamgiac.Checked = false;
form.ttamgiacvuong.Checked = false;
form.tthoi.Checked = false;
13
form.tsao4canh.Checked = false;
form.tsao5canh.Checked = false;
form.tsao6canh.Checked = false;
form.tngugiac.Checked = false;
form.tlucgiac.Checked = false;
form.tset.Checked = false;
form.thttron.Checked = false;

form.txoa.Checked = false;
form.tbezier.Checked = false;
}
public void refreshtkc(Form1 form)
{
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;
}
#endregion

 af(H+LGB&6@'!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace pains
{
class Property
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}

private Color color;
14
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; }
}
public void nhap(Form1 form)
{
color=form.color.BackColor;
Location=new Point(form.ptve.Location.X,form.ptve.Location.Y);
with=form.ptve.Width;
height = form.ptve.Height;
netve = form.ktnetve;
if(form.trec.Checked)
Name="Rectangle";

if (form.tellip.Checked)
Name = "ellip";
if (form.tline.Checked)
Name = "line";
if (form.ttext.Checked)
Name = "text";
if(form.tseclect.Checked)
15
Name = "seclect";
if(form.tdagiac.Checked)
Name="Mũi Tên Sang Trái";
if(form.tseclect.Checked)
Name="Select";
if(form.tdrop.Checked)
Name="Crop";
if(form.tphai.Checked)
Name="Mũi Tên Sang Phải";
if(form.txuong.Checked)
Name="Mũi Tên Xuống";
if(form.tlen.Checked)
Name="Mũi Tên Lên";
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)
Name="Hình Hội Thoại";
if (form.tbezier.Checked)
Name = "Bezier";
image = new Bitmap(form.ptve.Image);
}
}
}

 af(H'FL&';'b
"#$

 dH(+"Rf-H'_+"0G'BB*("k'
E+u*
class savedr
{
public savedr() { }
public GraphicsPath path = new GraphicsPath();
public Pen p = new Pen(Color.Black, 3);
16
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;
}
class savedraw
{
public savedr[] sd=new savedr[200];
public int n=0;
public savedraw()
{
}
}
 !
 af(H"#$'(-'bBB*
"k'E
 ?H+"Rf('/070-x'70-;)'.
_':>)670-Z
 -7'.0)H'yZ
 af(#'19-7'.(-'B(+q'7
"HE*
#region sự kiện chuột với pannel4
private void panel4_MouseDown(object sender, MouseEventArgs e)
{
mousepanel4 = true;
}
private void panel4_MouseMove(object sender, MouseEventArgs e)
{
kh.keo(sender, e, this);
}

private void panel4_MouseUp(object sender, MouseEventArgs e)
{
if (mousepanel4)
{
pe.Width = ptmain.Width;
pe.Height = ptmain.Height;
pe.vekeo();
}
mousepanel4 = false;
}
#endregion
 -7'.H'Z
17
 af(#'19-7'.(-''.'0F5+q'7
"HE*(w'h/065W
#region sự kiện với ptve
private void ptve_MouseDown(object sender, MouseEventArgs e)
{
dmouseptve = false;
mouseptve = true;
mousedownptve.X = e.X;
mousedownptve.Y = e.Y;
dr.x.X = ptve.Width;
dr.x.Y = ptve.Height;
}
private void ptve_MouseMove(object sender, MouseEventArgs e)
{
mousemuveptve = new Point(e.X, e.Y);
dmouseptve = false;
if (tbezier.Checked == false || pe.xet == 2)

{
if (tline.Checked == false)
{
dr.kiemtra(sender, e, this, pe);
dr.keo(sender, e, this, pe);
}
dr.dichuyen(sender, e, this, pe);
}
pe.vehinh(this, dr.rec);
}
private void ptve_MouseUp(object sender, MouseEventArgs e)
{
mouseptve = false;
dmouseptve = false;
if (ptve.Visible)
{
pro.nhap(this);
property.SelectedObject = pro;
}
else
property.SelectedObject = null;
if (tbezier.Checked)
{
if (pe.xet == 1)
pe.xet = 2;
if (pe.xet == 0)
pe.xet = 1;
}
}
private void ptve_DoubleClick(object sender, EventArgs e)

{
dmouseptve = true;
if (tdrop.Checked)
pe.vehinh(this, dr.rec);
18
}
#endregion
 -7'.'Z
 af(E19-7'.+6'H'E*?B0
sh-7'.+;8'B(*$+F-'.B*
"k'0
#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 = false;
dmouseptve = false;
mouseptmain = true;
pe.tam = true;
mousedownptmain.X = e.X;
mousedownptmain.Y = e.Y;
mouse.X = e.X;
mouse.Y = e.Y;
pe.laymau_pt(mousedownptmain, this);

if (ptve.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 = true;
dr.taorectangle(sender, e, this, pe);
}
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);
ptve.Visible = false;
}
if (ptve.Visible)
{
pro.nhap(this);
property.SelectedObject = pro;
}
else
property.SelectedObject = null;
}
private void doubleclick_pt(object sender, EventArgs e)
{
if (pe.luu.n != 0)
switch (MessageBox.Show("bạn có muốn lưu file không", "Thông
Báo", MessageBoxButtons.YesNoCancel))
{
case DialogResult.Yes:
saveToolStripMenuItem_Click(sender, e);
pe.Image = new Bitmap(557, 408);
pe.luu.n = 0;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
file = new FileInfo(openFileDialog1.FileName);
if (file.Extension == ".bmp" || file.Extension ==

".png" || file.Extension == ".gif" || file.Extension == ".jpg")
{
image = new Bitmap(openFileDialog1.FileName);
ptmain.Width = image.Width;
ptmain.Height = image.Height;
pe.Width = image.Width;
pe.Height = image.Height;
pe.Image = new Bitmap(image.Width,
image.Height);
Graphics g = Graphics.FromImage(pe.Image);
g.DrawImage(image, 0, 0);
pe.luu.sd[pe.luu.n] = new savedr();
pe.luu.sd[pe.luu.n].saveim = new
Bitmap(pe.Width, pe.Height);
Graphics f =
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);
if (file.Extension == ".bmp" || file.Extension ==
".png" || file.Extension == ".gif" || file.Extension == ".jpg")
{
image = new Bitmap(openFileDialog1.FileName);
ptmain.Width = image.Width;
ptmain.Height = image.Height;
pe.Width = image.Width;
pe.Height = image.Height;
pe.Image = new Bitmap(image.Width,
image.Height);
Graphics g = Graphics.FromImage(pe.Image);
g.DrawImage(image, 0, 0);
pe.luu.sd[pe.luu.n] = new savedr();
pe.luu.sd[pe.luu.n].saveim = new
Bitmap(pe.Width, pe.Height);
Graphics f =
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;
}

}
break;
}
else
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
file = new FileInfo(openFileDialog1.FileName);
if (file.Extension == ".bmp" || file.Extension == ".png"
|| file.Extension == ".gif" || file.Extension == ".jpg")
{
image = new Bitmap(openFileDialog1.FileName);
ptmain.Width = image.Width;
ptmain.Height = image.Height;
pe.Width = image.Width;
pe.Height = image.Height;
pe.Image = new Bitmap(image.Width, image.Height);
Graphics g = Graphics.FromImage(pe.Image);
g.DrawImage(image, 0, 0);
pe.luu.sd[pe.luu.n] = new savedr();
21
pe.luu.sd[pe.luu.n].saveim = new Bitmap(pe.Width,
pe.Height);
Graphics f =
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;
}
}
}
#endregion
 các hàm filedialog mở và lưu file
 ?B_(J("0,
#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))
{
case DialogResult.Yes:
saveToolStripMenuItem_Click(sender, e);
Application.Exit();
break;
case DialogResult.No:
Application.Exit();
break;
}
}
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
if (pe.luu.n != 0)
switch (MessageBox.Show("Bạn có muốn lưu file không", "Thông
Báo", MessageBoxButtons.YesNoCancel))
{
case DialogResult.Yes:

saveToolStripMenuItem_Click(sender, e);
pe.Image = new Bitmap(557, 408);
pe.luu.n = 0;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
file = new FileInfo(openFileDialog1.FileName);
if (file.Extension == ".bmp" || file.Extension ==
".png" || file.Extension == ".gif" || file.Extension == ".jpg")
{
image = new Bitmap(openFileDialog1.FileName);
ptmain.Width = image.Width;
ptmain.Height = image.Height;
pe.Width = image.Width;
pe.Height = image.Height;
22
pe.Image = new Bitmap(image.Width,
image.Height);
Graphics g = Graphics.FromImage(pe.Image);
g.DrawImage(image, 0, 0);
pe.luu.sd[pe.luu.n] = new savedr();
pe.luu.sd[pe.luu.n].saveim = new
Bitmap(pe.Width, pe.Height);
Graphics f =
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;
}
}
break;
case DialogResult.No:
pe.Image = new Bitmap(557, 408);
pe.luu.n = 0;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
file = new FileInfo(openFileDialog1.FileName);
if (file.Extension == ".bmp" || file.Extension ==
".png" || file.Extension == ".gif" || file.Extension == ".jpg")
{
image = new Bitmap(openFileDialog1.FileName);
ptmain.Width = image.Width;
ptmain.Height = image.Height;
pe.Width = image.Width;
pe.Height = image.Height;
pe.Image = new Bitmap(image.Width,
image.Height);
Graphics g = Graphics.FromImage(pe.Image);
g.DrawImage(image, 0, 0);
pe.luu.sd[pe.luu.n] = new savedr();
pe.luu.sd[pe.luu.n].saveim = new
Bitmap(pe.Width, pe.Height);
Graphics f =
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;
}
}
break;
}
23
else
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
file = new FileInfo(openFileDialog1.FileName);
if (file.Extension == ".bmp" || file.Extension == ".png"
|| file.Extension == ".gif" || file.Extension == ".jpg")
{
image = new Bitmap(openFileDialog1.FileName);
ptmain.Width = image.Width;
ptmain.Height = image.Height;
pe.Width = image.Width;
pe.Height = image.Height;
pe.Image = new Bitmap(image.Width, image.Height);
Graphics g = Graphics.FromImage(pe.Image);
g.DrawImage(image, 0, 0);
pe.luu.sd[pe.luu.n] = new savedr();
pe.luu.sd[pe.luu.n].saveim = new Bitmap(pe.Width,
pe.Height);
Graphics f =

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;
}
}
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
if (luufile != "")
saveAsToolStripMenuItem_Click(sender, e);
else
pe.Image.Save(luufile);
}
private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog a = new SaveFileDialog();
a.Filter = "file (*.gif)|*.gif|file (*.jpg)|*.jpg|file (*.png)|
*.png|file (*.bmp)|*.bmp";
a.RestoreDirectory = true;
if (a.ShowDialog() == DialogResult.OK)
{
string tam = a.FileName;
luufile = tam;
pe.Image.Save(tam);

}
}
private void newToolStripMenuItem_Click(object sender, EventArgs e)
{
24
switch (MessageBox.Show("Bạn có muốn lưu file không", "Thông Báo",
MessageBoxButtons.YesNoCancel))
{
case DialogResult.Yes:
saveToolStripMenuItem_Click(sender, e);
pe.Image = new Bitmap(557, 408);
pe.luu.n = 0;
break;
case DialogResult.No:
pe.Image = new Bitmap(557, 408);
pe.luu.n = 0;
break;
}
}
private void newToolStripButton_Click(object sender, EventArgs e)
{
switch (MessageBox.Show("Bạn có muốn lưu file không", "Thông Báo",
MessageBoxButtons.YesNoCancel))
{
case DialogResult.Yes:
saveToolStripMenuItem_Click(sender, e);
pe.Image = new Bitmap(557, 408);
pe.luu.n = 0;
break;
case DialogResult.No:

pe.Image = new Bitmap(557, 408);
pe.luu.n = 0;
break;
}
}
private void openToolStripButton_Click(object sender, EventArgs e)
{
if (pe.luu.n != 0)
switch (MessageBox.Show("Bạn có muốn lưu file không", "Thông
Báo", MessageBoxButtons.YesNoCancel))
{
case DialogResult.Yes:
saveToolStripMenuItem_Click(sender, e);
pe.Image = new Bitmap(557, 408);
pe.luu.n = 0;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
file = new FileInfo(openFileDialog1.FileName);
if (file.Extension == ".bmp" || file.Extension ==
".png" || file.Extension == ".gif" || file.Extension == ".jpg")
{
image = new Bitmap(openFileDialog1.FileName);
ptmain.Width = image.Width;
ptmain.Height = image.Height;
pe.Width = image.Width;
pe.Height = image.Height;
pe.Image = new Bitmap(image.Width,
image.Height);
Graphics g = Graphics.FromImage(pe.Image);
g.DrawImage(image, 0, 0);

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

×