《简易图像编辑与制作软件》由会员分享,可在线阅读,更多相关《简易图像编辑与制作软件(41页珍藏版)》请在金锄头文库上搜索。
1、 1 / 41C#.NET 课程设计实验报告班级:计算机 1302 姓名:吴秀文 学号:201320100218 题目:简易图像编辑与制作软件的实现目的:(1) 采用 C#制作一个简易的图像编辑与制作软件,巩固 C#的知识。(2) 培养学生独立完成 C#项目的开发经验。任务要求:(1) 图像编辑:1) 打开要编辑的图片,并显示初始图像:包括从菜单的“打开”项,工具栏“打开”按钮和系统打开方式(即在我的电脑里,选中图片文件后,右建打开方式选择本软件打开图片) ,以及拖放打开方式(即将图片拖动到打开的软件界面,就将该图打开显示)四种打开图片的功能均需实现。2) 显示功能:图像放大,缩小,实际大小3
2、) 图像编辑:水平翻转,垂直翻转,顺时针旋转 90 度,逆时针旋转90 度,反色,浮雕,黑白,柔化,锐化,灰度化,雾化,马赛克效果,设置图像像素大小。(2) 图片制作:1) 新建图像;2) 绘制直线,弧线,曲线,空心矩形,实心矩形,空心椭圆,实心椭圆,多边形,实心多边形,文本;3) 线型设置:实线,虚线,线条粗细,线条始止端点的形状4) 颜色设置:设置线或实心形状或字体的颜色,包括纯色(solidbrush) ;渐变色(渐变画笔) ;设置纹理(阴影画笔) ;设置填充图片(纹理画笔)(3) 保存:对新建的图像,保存时选择路径,图片格式,文件名,然后保存。否则直接保存图象。(4) 另存为:选择路径
3、,图片格式,文件名,然后保存图像。(5) 菜单和工具栏:软件需要有菜单和工具栏快捷按钮,菜单包括所有功 2 / 41能,工具栏可以设置最常用的快捷按钮以上是软件需要实现的基本功能,但可以自行新增一些功能和绘制图形。对于保存和打开图片功能,一般可设置支持 BMP,JPG,PNG,GIF,TIFF ,ICON格式。实验步骤:1、前期工作1.1 新建 Windows 应用程序项目:wuxiuwen,重命名 form1,wxw_Form1.cs。1.2 界面制作1.3 添加主界面 form 类的数据成员private Bitmap img = null;private string fullname
4、= null;/图像文件完整路径private int tempWidth, tempHeight;/图像变化信息,宽高属性private Color c;/前景色Color c1;/纯色;或渐变色的始止颜色;或者纹理的前景色和背景色private Color startcolor, endcolor;/用户设置前景色与背景色DashStyle line_type; /线型LineCap StartCap, EndCap;/起始端点形状,结束端点形状int colortype;/1 纯色,2 渐变色,3 纹理,4 图片填充 3 / 41LinearGradientMode lgm;/渐变方向H
5、atchStyle hs; /纹理类型Bitmap fill_img;/填充图片int lineheight;/线宽Pen pen;/钢笔SolidBrush sb;/纯色画笔LinearGradientBrush lgb;/渐变画笔HatchBrush hb;/阴影画笔,可画纹理效果 TextureBrush tb;/纹理画笔,可用于图片填充int drawselect = 0;/绘制图形选项,1 直线,2 曲线,3 弧线 4 空心矩形,5 实心矩形,6 空心椭圆,7 实心椭圆,8 空心多边形,9 实心多边形,10 文本Point startpoint;/绘制的起始点Point target
6、Point;/终点bool domousemove = false;/ 判断标记,是否为绘制时的鼠标移动ArrayList arrayPoint = new ArrayList();/存放绘制过程中的多个点的动态数组string drawstring = ; /绘制的文本Font myfont = new Font(宋体, 12);/绘制文本的字体1.4 设置属性public int ImageWidth/图片宽构造函数get return img.Width; set tempWidth = value; public int ImageHeight/图片高构造函数get return im
7、g.Height; set tempHeight = value; public Color startColor/前景色属性设置函数get return c; set c = value; public Color commonColor /纯色;或渐变色的始止颜色;或者纹理的前景色和背景色get return c1; set c1 = value; 4 / 41public int ColorTypeget return colortype; set colortype = value; public Color StartColor /前景色get return startcolor;
8、set startcolor = value; public Color EndColor/背景色get return endcolor; set endcolor = value; public HatchStyle HS/纹理样式get return hs; set hs = value; public const int Rotate180FlipY = 0;/水平旋转public const int Rotate180FlipX = 1; /垂直旋转public const int Rotate90FlipNone = 2;/顺时针public const int Rotate270F
9、lipNone = 3; /逆时针旋转 901.5 主界面 Form1_Load 方法中进行数据的必要初始化操作c = Color.Blue;c1 = Color.Green;line_type = DashStyle.Solid;startcolor = Color.Yellow; endcolor = Color.Green;colortype = 1;StartCap = LineCap.NoAnchor;EndCap = LineCap.NoAnchor;lgm = LinearGradientMode.Horizontal;hs = HatchStyle.DashedHorizont
10、al;img = new Bitmap(pictureBox1.Width, pictureBox1.Height);Graphics g = Graphics.FromImage(img);sb = new SolidBrush(Color.White);g.FillRectangle(sb, 0, 0, pictureBox1.Width, pictureBox1.Height); 5 / 41pictureBox1.Image = img;if (fullname != null & !fullname.Equals()Bitmap tempImage = new Bitmap(full
11、name);img = new Bitmap(tempImage.Width, tempImage.Height);Graphics draw = Graphics.FromImage(img);draw.DrawImage(tempImage, 0, 0, tempImage.Width, tempImage.Height);pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;pictureBox1.Image = img;draw.Dispose();tempImage.Dispose();添加系统命名空间using System.Coll
12、ections;using System.Drawing.Imaging;using System.Drawing.Drawing2D;2、图像编辑2.1 点击菜单栏的打开/增加带参数的构造方法public wxw_Form1(string a) InitializeComponent();fullname = a;private void 打开 ToolStripMenuItem_Click(object sender, EventArgs e)OpenFileDialog dialog = new OpenFileDialog();dialog.Filter = bmp,jpg,gif,p
13、ng,tiff,icon|*.bmp;*.jpg;*.gif;*.png;*.tiff;*.icon;dialog.Title = 选择图片;if (dialog.ShowDialog() = DialogResult.OK)Bitmap tempImage = new Bitmap(dialog.FileName);img = new Bitmap(tempImage.Width, tempImage.Height);Graphics draw = Graphics.FromImage(img);draw.DrawImage(tempImage, 0, 0, tempImage.Width,
14、 tempImage.Height);fullname = dialog.FileName.ToString();pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize; 6 / 41pictureBox1.Image = img;draw.Dispose();tempImage.Dispose();2.2 图像显示功能2.2.1 图像实际大小显示:Dock 必须设置为 None,否则图像放大与缩小将失效private void 实际大小 ToolStripMenuItem_Click(object sender, EventArgs e)pict
15、ureBox1.SizeMode = PictureBoxSizeMode.AutoSize; 7 / 412.2.2 放大图像的显示比例private void 放大 ToolStripMenuItem_Click(object sender, EventArgs e)pictureBox1.Height = (int)Math.Ceiling(pictureBox1.Height * 1.1);pictureBox1.Width = (int)Math.Ceiling(pictureBox1.Width * 1.1);pictureBox1.SizeMode = PictureBoxSiz
16、eMode.Zoom;2.2.3 缩小图像的显示比例private void 缩小 ToolStripMenuItem_Click(object sender, EventArgs e)pictureBox1.Height = (int)Math.Ceiling(pictureBox1.Height * 0.9);pictureBox1.Width = (int)Math.Ceiling(pictureBox1.Width * 0.9);pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;2.3 图像编辑2.3.1 设置图像像素大小新建图像编辑界面:wxw_setsize_Form1.cs 8 /