c#仿windows画图程序完整版.docx
- 文档编号:30499531
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:27
- 大小:65.72KB
c#仿windows画图程序完整版.docx
《c#仿windows画图程序完整版.docx》由会员分享,可在线阅读,更多相关《c#仿windows画图程序完整版.docx(27页珍藏版)》请在冰豆网上搜索。
c#仿windows画图程序完整版
注意:
本程序采用vs2008版,不兼容vs2005。
如果觉得可以就收藏吧。
本程序仅供做c#实验的同学的一个参考。
画图程序设计
实验目的:
1.了解.net下多媒体编程技术。
2.掌握Graphics类绘制图像的方法。
3.掌握使用GDI+技术显示和保存图像的方法。
实验要求:
1.设计一个画图程序。
2.可以绘制各种图形,可以选择画笔的线型和颜色。
3.可以将绘制的图像保存为位图文件。
Form1.cs
//主程序代码
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Drawing.Drawing2D;
usingSystem.Collections;
usingSystem.Net;
usingSystem.Net.Sockets;
usingSystem.Threading;
namespaceWindowsApplication1
{
publicenumLineStyle{SOLID,DASH,DOT};
publicpartialclassFrmDraw:
Form
{
privateColorPenColor;
privateenumShape{LINE,ELLIPSE,RECTANGLE,CIRCLE,FillRectangle,Pencil,Eraser,ELLIPSE1};
privateShapeDrawShape;
privatePointStartPoint;
privatePointEndPoint;
privatePointz;
publicGraphicsgps;
privateboolMouseDownFlag;
privatePenPenLine;
privateSolidBrushSolid;
privateHashtableDrawObject;
privateintcount;
privatestringShapeName;
privateLineStylelineStyle;
privateboolisOpen;
privatestringimagePath;
privatestringstrShape;
privatestringstrLineStyle;
PaintEventArgse1=null;
inti=0;
intj=0;
intx2=-1,y2=-1;
publicFrmDraw()
{
isOpen=false;
count=0;
lineStyle=LineStyle.SOLID;
MouseDownFlag=false;
PenLine=newPen(PenColor);
PenColor=System.Drawing.Color.Black;
DrawShape=Shape.LINE;
DrawObject=newHashtable();
ShapeName="LINE";
strShape="直线";
strLineStyle="实线";
InitializeComponent();
}
//自定义颜色
privatevoidCoustumColor_Click(objectsender,EventArgse)
{
if(colorDialog.ShowDialog()==DialogResult.OK)
{
PenColor=colorDialog.Color;
}
}
//鼠标事件
privatevoidFrmDraw_MouseDown(objectsender,MouseEventArgse)
{
MouseDownFlag=true;
StartPoint.X=e.X;
StartPoint.Y=e.Y;
z.X=e.X;
z.Y=e.Y;
//Colorclr=GetBkColor(newPoint(e.X,e.Y));
//MessageBox.Show("R"+clr.R.ToString()+"G"+clr.G.ToString()+"B"+clr.B.ToString());
}
privatevoidFrmDraw_MouseMove(objectsender,MouseEventArgse)
{
if(MouseDownFlag)
{
ColorBkColor=this.BackColor;//Color.FromArgb(212,208,200);
if(DrawObject!
=null)
{
foreach(DictionaryEntrydeinDrawObject)
{
string[]splipstr=de.Key.ToString().Split('|');
switch(splipstr[0])
{
case"Pencil":
((Pencil)de.Value).Draw(gps);
break;
case"LINE":
((DrawLine)de.Value).Draw(gps);
break;
case"ELLIPSE":
((DrawEelipse)de.Value).Draw(gps);
break;
case"RECTANGLE":
((DrawRectangle)de.Value).Draw(gps);
break;
case"CIRCLE":
((CIRCLE)de.Value).Draw(gps);
break;
}
}
}
switch(lineStyle)
{
caseLineStyle.DASH:
PenLine.DashStyle=DashStyle.Dash;
break;
caseLineStyle.DOT:
PenLine.DashStyle=DashStyle.Dot;
break;
caseLineStyle.SOLID:
PenLine.DashStyle=DashStyle.Solid;
break;
}
switch(DrawShape)
{
caseShape.Pencil:
EndPoint=newPoint(e.X,e.Y);
PenLine.Color=PenColor;
//gps.DrawLine(PenLine,z,EndPoint);
Pencilpencil=newPencil(z,EndPoint,PenLine,PenColor);
DrawObject.Add(ShapeName+"|"+count+i,pencil);
i++;
break;
caseShape.LINE:
if(x2!
=-1)
{
PenLine.Color=BkColor;
gps.DrawLine(PenLine,StartPoint,EndPoint);
}
EndPoint=newPoint(e.X,e.Y);
PenLine.Color=PenColor;
gps.DrawLine(PenLine,StartPoint,EndPoint);
break;
caseShape.ELLIPSE:
if(x2!
=-1)
{
PenLine.Color=BkColor;
gps.DrawEllipse(PenLine,StartPoint.X,StartPoint.Y,EndPoint.X-StartPoint.X,
EndPoint.Y-StartPoint.Y);
}
EndPoint=newPoint(e.X,e.Y);
PenLine.Color=PenColor;
gps.DrawEllipse(PenLine,StartPoint.X,StartPoint.Y,EndPoint.X-StartPoint.X,
EndPoint.Y-StartPoint.Y);
break;
caseShape.ELLIPSE1:
if(x2!
=-1)
{
Solid.Color=BkColor;
gps.FillEllipse(Solid,StartPoint.X,StartPoint.Y,EndPoint.X-StartPoint.X,
EndPoint.Y-StartPoint.Y);
}
EndPoint=newPoint(e.X,e.Y);
Solid=newSolidBrush(PenColor);
gps.FillEllipse(Solid,StartPoint.X,StartPoint.Y,EndPoint.X-StartPoint.X,
EndPoint.Y-StartPoint.Y);
break;
caseShape.CIRCLE:
if(x2!
=-1)
{
PenLine.Color=BkColor;
gps.DrawEllipse(PenLine,StartPoint.X,StartPoint.Y,EndPoint.X-StartPoint.X,
EndPoint.X-StartPoint.X);
}
EndPoint=newPoint(e.X,e.Y);
PenLine.Color=PenColor;
gps.DrawEllipse(PenLine,StartPoint.X,StartPoint.Y,EndPoint.X-StartPoint.X,
EndPoint.X-StartPoint.X);
break;
caseShape.RECTANGLE:
/*floatwidth=Math.Abs(e.X-StartPoint.X);//确定矩形的宽
floatheigth=Math.Abs(e.Y-StartPoint.Y);//确定矩形的高
if(x2!
=-1)
{
PenLine.Color=Color.White;
//gps.DrawRectangle(PenLine,StartPoint.X,StartPoint.Y,EndPoint.X-StartPoint.X,
//EndPoint.Y-StartPoint.Y);
gps.DrawRectangle(PenLine,StartPoint.X,StartPoint.Y,width,heigth);
}
PenLine.Color=PenColor;
if(e.X { StartPoint.X=e.X; } if(e.Y { StartPoint.Y=e.Y; } gps.DrawRectangle(PenLine,StartPoint.X,StartPoint.Y,width,heigth); break;*/ if(x2! =-1) { PenLine.Color=BkColor; gps.DrawRectangle(PenLine,StartPoint.X,StartPoint.Y,EndPoint.X-StartPoint.X, EndPoint.Y-StartPoint.Y); } EndPoint=newPoint(e.X,e.Y); PenLine.Color=PenColor; gps.DrawRectangle(PenLine,StartPoint.X,StartPoint.Y,EndPoint.X-StartPoint.X, EndPoint.Y-StartPoint.Y); break; caseShape.FillRectangle: if(x2! =-1) { Solid.Color=BkColor; gps.FillRectangle(Solid,StartPoint.X,StartPoint.Y,EndPoint.X-StartPoint.X, EndPoint.Y-StartPoint.Y); } EndPoint=newPoint(e.X,e.Y); Solid=newSolidBrush(PenColor); gps.FillRectangle(Solid,StartPoint.X,StartPoint.Y,EndPoint.X-StartPoint.X, EndPoint.Y-StartPoint.Y); break; } x2=e.X; y2=e.Y; z.X=e.X; z.Y=e.Y; } } privatevoidFrmDraw_MouseUp(objectsender,MouseEventArgse) { MouseDownFlag=false; count++; switch(DrawShape) { caseShape.Pencil: //Pencilpencil=newPencil(StartPoint,EndPoint,PenLine,PenColor); //DrawObject.Add(ShapeName+"|"+count,pencil); break; caseShape.Eraser: ; break; caseShape.ELLIPSE: DrawEelipseeelipse=newDrawEelipse(StartPoint,EndPoint,PenLine,PenColor,lineStyle); DrawObject.Add(ShapeName+"|"+count,eelipse); break; caseShape.CIRCLE: CIRCLEcircle=newCIRCLE(StartPoint,EndPoint,PenLine,PenColor,lineStyle); DrawObject.Add(ShapeName+"|"+count,circle); break; caseShape.LINE: DrawLineline=newDrawLine(StartPoint,EndPoint,PenLine,PenColor,lineStyle); DrawObject.Add(ShapeName+"|"+count,line); break; caseShape.RECTANGLE: DrawRectanglerectangle=newDrawRectangle(StartPoint,EndPoint,PenLine,PenColor,lineStyle); DrawObject.Add(ShapeName+"|"+count,rectangle); break; } x2=y2=-1; if(e1! =null) { FrmDraw_Paint(this,e1); } } //加载事件 privatevoidFrmDraw_Load(objectsender,EventArgse) { gps=this.CreateGraphics(); } privatevoidtoolLineStyle_SelectedIndexChanged(objectsender,EventArgse) { switch(toolLineStyle.Text.Trim()) { case"实线": lineStyle=LineStyle.SOLID; strLineStyle="实线"; break; case"虚线": lineStyle=LineStyle.DASH; strLineStyle="虚线"; break; case"点划线": lineStyle=LineStyle.DOT; strLineStyle="点划线"; break; } } privatevoidToolBtnLine_Click(objectsender,EventArgse) { DrawShape=Shape.LINE; ShapeName="LINE"; strShape="直线"; } privatevoidtoolBtnEllipse_Click(objectsender,EventArgse) { DrawShape=Shape.ELLIPSE; ShapeName="ELLIPSE"; strShape="椭圆"; } privatevoidtoolStripButton3_Click(objectsender,EventArgse) { DrawShape=Shape.CIRCLE; ShapeName="CIRCLE"; strShape="圆"; } privatevoidtoolStripButton1_Click(objectsender,EventArgse) { DrawShape=Shape.RECTANGLE; ShapeName="RECTANGLE"; strShape="矩形"; } privatevoidtoolStripButton4_Click(objectsender,EventArgse) { DrawShape=Shape.Pencil; ShapeName="Pencil"; strShape="铅笔"; } //菜单栏事件 privatevoid退出ToolStripMenuItem_Click(objectsender,EventArgse) { this.Close(); Application.Exit(); } privatevoid选项栏OToolStripMenuItem_Click(objectsender,EventArgse) { if(选项栏OToolStripMenuItem.Checked) { 选项栏OToolStripMenuItem.Checked=false; Option.Hide(); } else { 选项栏OToolStripMenuItem.Checked=true; Option.Show(); } } privatevoid工具箱ToolStripMenuItem_Click(objectsender,EventArgse) { if(工具箱ToolStripMenuItem.Checked) { 工具箱ToolStripMenuItem.Checked=false; ToolBox.Hide(); } else { 工具箱ToolStripMenuItem.Checked=true; ToolBox.Show(); } } privatevoid保存SToolStripMenuItem_Click(objectsender,EventArgse) { } privatevoid新建NToolStripMenuItem_Click(objectsender,EventArgse) { gps=this.CreateGraphics(); Rectanglerect=newRectangle(0,0,this.Width,this.Height); gps.FillRectangle(newSolidBrush(this.BackColor),rect); DrawObject.Clear(); } privatevoid打开ToolStripMenuItem_Click(objectsender,EventArgse) { openFileDialog.Filter="JPEGFile(*.jpg)|*.jpg|BitmapFile(*bmp)|*.bmp|AllFiles(*.*)|*.*"; if(DialogResult.OK==openFileDialog.ShowDialog()) { gps=this.CreateGraphics(); Rectanglerect=newRectangle(0,0,this.Width,this.Height); gps.FillRectangle(newSolidBrush(this.BackColor),rect); DrawObject.Clear(); ImageopenBitmap=Image.FromFile(openFileDialog.FileName); gps.DrawImage(openBitmap,newPoint(0,0)); isOpen=true; imagePath=openFileDialog.FileName; } } //重绘事件 privatevoidFrmDraw_Paint(objectsender,PaintEventArgse) { this.e1=e; if(D
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c# windows 画图 程序 完整版