为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

C#图片浏览器C#设计报告

2018-09-10 27页 doc 239KB 87阅读

用户头像

is_317472

暂无简介

举报
C#图片浏览器C#设计报告广东交通职业技术学院 计算机工程学院 项目实训报告书 课程名称    C#课程设计            题目    图片浏览器             项目实训日期 6月29号 至 7月4号 指导教师 王槐斌    06软件  2 班 01 号   汪碧康(组长)    成绩       06软件  2 班 02 号   刘芋江   成绩       06软件  2 班 03 号   王国茂   成绩      ...
C#图片浏览器C#设计报告
广东交通职业技术学院 计算机工程学院 项目实训书 课程名称    C#课程设计            目    图片浏览器             项目实训日期 6月29号 至 7月4号 指导教师 王槐斌    06软件  2 班 01 号   汪碧康(组长)    成绩       06软件  2 班 02 号   刘芋江   成绩       06软件  2 班 03 号   王国茂   成绩      06软件  2 班 25 号   周创建   成绩      目录 一.概述…………………………………………2 1.1背景………………………………………………2 1.2开发与运行环境………………………………..3 二.需求分析……………………………………3 三.系统设计…………………………………4 四.详细设计……………………………....5 4.1界面设计……………………………………..5 4.2代码设计……………………………………..7 五.结束语………………………………….25 六.参考文献……………………………….26 1. 概述 1.1 背景 由于对于现在使用电脑的大部份用户来说,在进行图片查看浏览的时候都会用到图片浏览器,而对于图片的处理大部份也都是一些具有专业图片处理知识的人才会做的,而对于一些简单的图片处理比如:对于图片的一些简单的调整图片的亮度,对比度以及色相等等一些简单的操作,这些调整可以让图片更清晰。而这样简单的图片处理都会是必须懂得photoshop,filework等图片处理软件的人才知道怎么处理,而对于一般的用户来说,他们说不定连这个软件都不知道。而对于现在的图片处理和浏览的软件来说,要就是专门对图片处理的软件,要就是对图片专门进行浏览的。很少具有同时两样都具有而且还是一些即简单又实用的软件来对图片进行浏览处理。 目前常用的专门对于图片的处理软件有Adobe pshotoshop,Filework。而对于对于图片 浏览,最常用的就是Windos自带的Windos图片浏览器了,还有就是ACDsee图片浏览器。Windows图片浏览器和ACDsee图片浏览器呢,前者功能:图片浏览,查看,而且还可以查看传真,对图片进行放大缩小查看,进行复制,删除。打印。ACDsee功能:不但具有前者的功能,而且附加了许多的功能,如:图片的获取、管理、浏览、优化甚至和他人的分享!使用ACDSee,你可以从数码相机和扫描仪高效获取图片,并进行便捷的查找、组织和预览。图片编辑工具,轻松处理数码影像等等,还能进行批量处理。 对于这几款软件的各有不同的功能和不足综合分析如下: · Adobe photoshop,Filework,这两款软件是专门的对图片的处理,而不对图片进行浏览,虽说可以用来浏览图片,但是用起来比较单一,也就是比较麻烦,比较单一的查看一张图片而已。 · Windows图片浏览器和ACDsee图片浏览器:前者呢只有简单的功能,而后者虽说功能来说就特别的多了,但是这些功能都比较复杂,而且比较专业,对于大部分非计算机专业的用户来说根部就不知道怎么用,也不知道那些功能的专业术语的意思,也就谈不上用了。而对于这些功能的发挥也只有对于那些专业的数码照片处理的人来说就再好不过了。只不过对于普通的电脑用户来说,显得大材小用了些。 · 图片浏览的时候不具有动态显示,给用户视觉上比较可观的效果,没有背景音乐让用户不但在看的同时享受视觉而且还可以享受听觉上的效果,这对于那些浏览比较值得记忆的图片,同时并播放比较怀旧让勾起回忆的歌。这将会是一种其乐无穷,而且容易让自己回到了那个时候的感觉。 · 而这两块软件都不具有的功能就是截图抓屏功能,抓屏截图这两种功能来只有在登录QQ的时候大部份用户才能用,但是在没上网,没登录QQ的时候想截些图就不行了,这是对于平常大部份用户的使用习惯来了解的。 · 不能在看图的时候打开一些根据自己的使用习惯来打开比较常用的音乐播放器软件,不能打开IE浏览器进行图片的搜索查找功能。 1.2 开发与运行环境 Flash精选助手的开发与运行环境如下: 开发环境:Windows XP 开发工具:Microsoft Visual studio2003 C# 硬件环境: CPU:800MHz、内存:128M、硬盘:20G 运行环境:Windows 2000/XP/2003 2. 需求分析 本软件为一个简单而且很实用的动态图片查看,音乐视听,截图抓屏的图片浏览器,不但可以进行图片的一些简单查看,浏览操作,处理,而且还可以进行音乐视听等功能,是一款比较适合广大普通用户和非计算机专业的用户的图片查看处理软件,本软件不但界面友好,功能齐全,而且操作简单。是款比较容易操作,实用的图片管理软件。 本软件具体包括以下主要功能:. 1. 能对图片文件和进行简单的操作管理,包含: · 对各种不同格式的图片打开和保存并在处理后另存为,,。 · 可直接讲图片拖进图片框显示。 · 删除图片浏览途中不想要的图片。 · 将抓的图片进行保存。 · 将浏览途中的图片复制到其它文件夹。 2. 可对图片浏览进行控制,包含: · 单张图片的重复浏览,功能按钮为上一张,下一张。 · 对浏览途中需要放大和缩小的图片进行放大和缩小处理。 3. 对一个文件夹下打开的图片文件进行自动浏览,包含: · 自动播放浏览, · 浏览的同时并实现动态的显示效果。 · 在进行图片自动播放浏览的同时,还进行背景音乐的播放。 4. 在对图片浏览时打开平常经常用的软件起辅助作用。包含: · 打开用户经常使用的千千静听音乐播放器软件来进行自己喜欢的音乐设定的播放。 · 打开IE浏览器来进行图片的搜索查找,并打开到其它想打开的网址。 5. 对于黑暗、不清晰的图进行简单的处理使其更清晰。包含: · 对图片对比度的调整。 · 对图片明暗度的调整。 · 对图片色相度的调整。 · 对图片饱和度的调整。 6. 抓图截图的功能包含: · 可以实现屏幕抓屏。 · 可以抓去任何屏幕上自己喜欢的任意一块图片。 7. 对图片进行各种滤镜处理来达到一定视觉效果。包含: · 对图片进行设置浮雕效果。 · 对图片进行设置浮雕效果。 · 对图片进行设置雾化效果。 · 对图片进行设置锐化效果。 · 对图片进行设置反色效果。 · 对图片进行设置黑白效果。 · 对图片进行设置柔化效果。 8. 图片的显示位置及方式。 · 图片居中显示。 · 图片满图片框显示。 · 图片的自动大小显示。 3. 系统设计 根据系统功能分析,经过模块化的分析得到如下图所示的系统功能模块结构图。 图1 系统功能模块结构图 4. 详细设计 5. 4.1 界面设计 1、图片浏览器主界面如下图2: 图2. 软件主界面图 2、参数设置如下图3: 图3 设置图 3、图片调整界如图4: 4.2 代码设计 1.输入模块: 1.1 从文件夹中打开需要浏览的图片: openImage() private void openImage() { // 如果当前正显示幻灯片,先关闭定时器2 this.timer1.Enabled = false; if(this.openFileDialog1.ShowDialog() == DialogResult.OK) { if(this.pictureBox1 .Image !=null) this.pictureBox1 .Image.Dispose (); pictureBox1.Image = Image.FromFile(this.openFileDialog1.FileName); //设置全局变量entireFilePath,用于保存文件名(在上一张、下一张、幻灯片显示时记录当前//图片的位置) this.entireFilePath = this.openFileDialog1.FileName.ToString(); this.statusBarPanel2.Text = "图片大小:"+this.pictureBox1.Image.Size.Width.ToString(); this.statusBarPanel2.Text += "*" + this.pictureBox1.Image.Size.Height.ToString(); //得到图片所在文件夹的路径 string filePath = ""; filePath = openFileDialog1.FileName.Substring (0,openFileDialog1.FileName.LastIndexOf("\\")); //打开目录,并将目录中所有.jpg.bmp.gif类型的图片放入FileInDir集合 System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(filePath); System.IO.FileInfo[] fileInfo = dir.GetFiles(); FileInDir.Clear(); foreach(FileInfo fi in fileInfo) { if(fi.Extension == ".JPG" || fi.Extension == ".jpg" || fi.Extension == ".jpeg" || fi.Extension == ".tif" || fi.Extension == ".png" || fi.Extension == ".bmp" || fi.Extension == ".BMP" || fi.Extension == ".gif" || fi.Extension == ".GIF" ) { FileInDir.Add(fi.FullName.ToString()); } }//得到当前打开图片在FileInDir中的索引(index为定义的全局变量) for(index = 0;index 1) {//确定图片浏览的上一张和下一张按钮的可用性 this.toolBarButton7.Enabled = true; if(index == 0) {//当索引值为第一章时上一张按钮不可用 this.toolBarButton5.Enabled = false; this.toolBarButton6.Enabled = true; } else if(index == FileInDir.Count-1) { this.toolBarButton6.Enabled = false; this.toolBarButton5.Enabled = true; } else { this.toolBarButton5.Enabled = true; this.toolBarButton6.Enabled = true; } } this.statusBarPanel1.Text = this.openFileDialog1.FileName.ToString();//在状态栏显示浏览图片的路径 FileInfo info =new FileInfo (this.openFileDialog1 .FileName .ToString ()); this.statusBarPanel3 .Text ="文件大小:"+ info.Length.ToString () +"B"; //显示图片文件的大小 } } 从文件夹中拖进图片框:这里用到两个事件:_DragDrop和​_DragEnter: private void pictureBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) {//图片拖进图片框 if(e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Link; else e.Effect = DragDropEffects.None; } private void pictureBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { // 拖进后释放鼠标 if (e.Data.GetDataPresent(DataFormats.FileDrop)) { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); for ( int i = 0; i< files.Length ;i++) { test(files[i]); } } } 抓屏和截图:这里的代码用到了API函数,这是一段从网上找来的代码改的。在抓屏这个功能中关键代码如下; this.Visible = false ; IntPtr dc1 = CreateDC ( "DISPLAY" , null , null , ( IntPtr ) null ) ; //获取屏幕句柄,即源显示设备句柄 Graphics g1 = Graphics.FromHdc ( dc1 ) ; MyImage = new Bitmap ( Screen.PrimaryScreen.Bounds.Width , Screen.PrimaryScreen.Bounds.Height , g1 ) ; //初始化Bitbmp实例 Graphics g2 = Graphics.FromImage ( MyImage ) ; Visible = false ; dc1 = g1.GetHdc ( ) ; IntPtr dc2 = g2.GetHdc ( ) ; //获取Bitbmp实例对应的句柄 BitBlt ( dc2 , 0 , 0 , Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height , dc1 , 0 , 0 , 13369376 ) ; //利用Bitblt函数,把当前屏幕拷贝到创建的Bitbmp实例中 g1.ReleaseHdc ( dc1 ) ; g2.ReleaseHdc ( dc2 ) ; this.Visible = true ; this.SetBounds ( 0 , 0 ,pictureBox1 .Width ,this.pictureBox1 .Height) ; //this.Cursor = Cursors.Cross ; this.pictureBox1 .Image =MyImage; 截图功能代码如下: private void Form3_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { if(!isDoubleClick) { begin = true; if ( StartedCrop == false ) { DeltaX = 0 ; DeltaY = 0 ; } StartedCrop = true ; StartPoint = new Point ( e.X , e.Y ) ; SelectRect.Width = 0 ; SelectRect.Height = 0 ; SelectRect.X = e.X ; SelectRect.Y = e.Y ; Invalidate ( ) ; } } private void Form3_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { if(begin) { Form thisform = ( Form ) sender ; if ( StartedCrop ) { DeltaX = e.X - StartPoint.X ; if ( DeltaX < 0 ) DeltaX = 0 ; DeltaY = e.Y - StartPoint.Y ; if ( DeltaY < 0 ) DeltaY = 0 ; ControlPaint.DrawReversibleFrame ( thisform.RectangleToScreen ( SelectRect ) , Color.Black , FrameStyle.Dashed ) ; SelectRect.Width = e.X - SelectRect.X ; SelectRect.Height = e.Y - SelectRect.Y ; ControlPaint.DrawReversibleFrame ( thisform.RectangleToScreen ( SelectRect ) , Color.Black , FrameStyle.Dashed ) ; } } } private void Form3_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) { StartedCrop = false ; SelectRect.X = e.X-StartPoint.X ; SelectRect.Y = e.Y-StartPoint.Y ;//鼠标截图的区域 this.Cursor = Cursors.Cross ; isDoubleClick = true; } private void Form3_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e) {//响应键盘按下Esc退出,按下Enter则截图 switch(e.KeyCode ) { case Keys.Escape : this.Close(); break; case Keys.Enter : Qscreen(); break; } } private void Form3_Load(object sender, System.EventArgs e) {//在抓屏后在对抓去的图片全屏并进行截图 IntPtr dc1 = CreateDC ( "DISPLAY" , null , null , ( IntPtr ) null ) ; //获取屏幕句柄,即源显示设备句柄 Graphics g1 = Graphics.FromHdc ( dc1 ) ; MyImage = new Bitmap ( Screen.PrimaryScreen.Bounds.Width , Screen.PrimaryScreen.Bounds.Height , g1 ) ; //初始化Bitbmp实例 Graphics g2 = Graphics.FromImage ( MyImage ) ; Visible = false ; dc1 = g1.GetHdc ( ) ; IntPtr dc2 = g2.GetHdc ( ) ; //获取Bitbmp实例对应的句柄 BitBlt ( dc2 , 0 , 0 , Screen.PrimaryScreen.Bounds.Width , Screen.PrimaryScreen.Bounds.Height , dc1 , 0 , 0 , 13369376 ) ; //利用Bitblt函数,把当前屏幕拷贝到创建的Bitbmp实例中 g1.ReleaseHdc ( dc1 ) ; g2.ReleaseHdc ( dc2 ) ; //this.Visible = true ; this.SetBounds ( 0 , 0 , Screen.PrimaryScreen.Bounds.Width , Screen.PrimaryScreen.Bounds.Height ) ; this.Cursor = Cursors.Cross ;//鼠标为十字型鼠标 } private void Form3_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { if ( MyImage != null ) { e.Graphics.DrawImage ( MyImage , ClientRectangle , 0 , 0 , MyImage.Width , MyImage.Height , GraphicsUnit.Pixel ) ; } } private void Form3_DoubleClick(object sender, System.EventArgs e) { this.Left = 0 ; this.Top = 0 ; Bitmap theImage = new Bitmap ( DeltaX , DeltaY ) ; Graphics g = Graphics.FromImage ( theImage ) ; Rectangle destRect = new Rectangle ( 0 , 0 , DeltaX , DeltaY ) ; g.DrawImage ( MyImage , destRect , StartPoint.X , StartPoint.Y , theImage.Width , theImage.Height , GraphicsUnit.Pixel ) ; //利用DrawImage方法实现对源图片的截取 MyImage = ( Bitmap ) theImage.Clone ( ) ; this.SetBounds ( 0 , 0 , MyImage.Width , MyImage.Height ) ; //根据捕获的图片设定窗体的边界 this.Cursor = Cursors.Cross ; Invalidate ( ) ; //MyImage.Save ( @"C:\Captured.jpg" ) ; //MessageBox.Show ( @"已经保存为C:\Captured.jpg!" ) ; this.pictureBox1 .Image =MyImage; this.Close (); } 2.处理模块: 2.1图片文件管理:报考对图片的打开,保存,另存为,和软件的退出。代码如下: private void menuItem3_Click(object sender, System.EventArgs e) {//保存图片在C盘且图片文件名为Captured.jpg if(this.pictureBox1.Image !=null) { this.pictureBox1 .Image.Save(@"C:\Captured.jpg" ) ;//FileInDir[index].ToString()); MessageBox.Show ( @"已经保存为C:\Captured.jpg!") ;//"+FileInDir[index].ToString());// } else MessageBox.Show ("没有要保存的图片!"); } private void menuItem4_Click(object sender, System.EventArgs e) { //图片另存为 if(this.pictureBox1 .Image !=null) { this.saveFileDialog1.Filter="图像文件(*.JPG)|*.JPG|图像文件(*.BMP)|*.BMP|图像文件(*.GIF)|*.GIF|图像文件(*.PNG)|*.PNG|所有文件(*.*)|*.*"; this.saveFileDialog1.ShowDialog(); string StrFileName=this.saveFileDialog1.FileName; //if (saveFileDialog1.ShowDialog() == DialogResult.OK) // 文件名 if(StrFileName.Trim()=="") return; this.pictureBox1.Image .Save (StrFileName); } else MessageBox.Show ("没有要保存的图片!"); } 2.2对图片浏览并进行放大缩小,关键代码如下: private void viewImage(bool mark) { //如果图片框中当前有显示图片时才可进行该方法 if(this.pictureBox1.Image != null) { //如是mark值为-1,则向前显示 if(!mark) { if(index == 0) { MessageBox.Show("这是第一张了"); //index = FileInDir.Count-1; } else { this.pictureBox1.Image = Image.FromFile(FileInDir[--index].ToString());//图片框中加载按索引显示图片 //VbycView(); //rad(); shiheView(); } } //如果为1,则向后显示 else { if(index == FileInDir.Count-1) { MessageBox.Show("这是最后一张"); //index=0; } else { this.pictureBox1.Image = Image.FromFile(FileInDir[++index].ToString()); //rad(); //VbycView(); shiheView();//按合适的显示方式显示在图片框中 } } entireFilePath2 = FileInDir[index].ToString(); this.statusBarPanel1 .Text = FileInDir[index].ToString(); FileInfo info =new FileInfo (this.statusBarPanel1 .Text ); this.statusBarPanel3 .Text ="文件大小:"+ info.Length.ToString ()+"B" ;//显示滚动图片的文件大小 } else { MessageBox.Show("请先打开图片"); } } private void preView() {//上一张图片 this.pictureBox1 .Image .Dispose ();//释放图片框占用的资源 viewImage(false); } private void nextView() {//下一张图片 this.pictureBox1 .Image .Dispose (); viewImage(true); } private void max() { //放大图片 int w=pictureBox1 .Image .Width ;//图片的宽 int h=pictureBox1 .Image .Height ;//图片的高 // int b=w/h; w=w+25; h=h+20; NewBitmap=new Bitmap(this.pictureBox1 .Image,w,h);//(int)this.numericUpDown1.Value,(int)this.numericUpDown2.Value);新建位图并显示在图片框中 this.pictureBox1.Image=NewBitmap; } private void min() { //缩小图片 int w=pictureBox1 .Image .Width ; int h=pictureBox1 .Image .Height ;; //int b=w/h; w=w-25; h=h-20; NewBitmap=new Bitmap(this.pictureBox1.Image,w,h); this.pictureBox1.Image=NewBitmap;//将改变后的位图显示在图片框中 } 2.3对图片进行幻灯片播放:此关键功能包括对图片的动态显示,背景音乐播放,和自动浏览,关键代码如下: 动态效果的函数: private void rad() { //随机出现动态显示 string[] aa={"1","2","3","4","5","6","7"}; Random rr = new Random(); string bb = aa[rr.Next(0,aa.Length)]; switch(bb) {//建立一个随机数组,并随机运行图片动态显示的函数 case "1": utdView(); break; case "2": rtlView(); break; case "3": lblsView(); break; case "4": ksView(); break; case "5": fzView(); break; case "6": VbycView(); break; case"7": HbycView(); break; } } private void HbycView() {//水平百叶窗方式显示 MyBitmap=(Bitmap)this.pictureBox1.Image.Clone(); int dh=MyBitmap.Height/30; int dw=MyBitmap.Width; Graphics g=this.pictureBox1.CreateGraphics(); g.Clear(Color.Gray); Point []MyPoint=new Point[30]; for(int y=0;y<30;y++) { MyPoint[y].X=0; MyPoint[y].Y=y*dh; } Bitmap bitmap=new Bitmap(MyBitmap.Width,MyBitmap.Height); for(int i=0;i255) r=255; if(r<0) r=0; if(g>255) g=255; if(g<0) g=0; if(b>255) b=255; if(b<0) b=0; bitmap.SetPixel(x,y,Color.FromArgb(r,g,b)); } } this.pictureBox1.Image=bitmap; } private void hbView() {//以黑白方式显示图像 int Height=this.pictureBox1.Image.Height; int Width=this.pictureBox1.Image.Width; Bitmap bitmap=new Bitmap(Width,Height); Bitmap MyBitmap=(Bitmap)this.pictureBox1.Image; Color pixel; for (int x=0; xg?r:g; Result=Result>b?Result:b; break; case 2://加权平均值法 Result=((int)(0.7*r)+(int)(0.2*g)+(int)(0.1*b)); break; } bitmap.SetPixel(x,y,Color.FromArgb(Result,Result,Result)); } this.pictureBox1.Image=bitmap; } private void rhView() {//以柔化方式显示图像 int Height=this.pictureBox1.Image.Height; int Width=this.pictureBox1.Image.Width; Bitmap bitmap=new Bitmap(Width,Height); Bitmap MyBitmap=(Bitmap)this.pictureBox1.Image; Color pixel; //高斯模板 int []Gauss={1,2,1,2,4,2,1,2,1}; for(int x=1;x255?255:r; r=r<0?0:r; g=g>255?255:g; g=g<0?0:g; b=b>255?255:b; b=b<0?0:b; bitmap.SetPixel(x-1,y-1,Color.FromArgb(r,g,b)); } this.pictureBox1.Image=bitmap; } private void whView() {//以雾化方式显示图像 int Height=this.pictureBox1.Image.Height; int Width=this.pictureBox1.Image.Width; Bitmap bitmap=new Bitmap(Width,Height); Bitmap MyBitmap=(Bitmap)this.pictureBox1.Image; Color pixel; for(int x=1;x=Width) dx=Width-1; if(dy>=Height) dy=Height-1; pixel=MyBitmap.GetPixel(dx,dy); bitmap.SetPixel(x,y,pixel); } this.pictureBox1.Image=bitmap; } private void RhView() {//以锐化方式显示图像 int Height=this.pictureBox1.Image.Height; int Width=this.pictureBox1.Image.Width; Bitmap bitmap=new Bitmap(Width,Height); Bitmap MyBitmap=(Bitmap)this.pictureBox1.Image; Color pixel; //拉普拉斯模板 int []Laplacian={-1,-1,-1,-1,9,-1,-1,-1,-1}; for(int x=1;x255?255:r; r=r<0?0:r; g=g>255?255:g; g=g<0?0:g; b=b>255?255:b; b=b<0?0:b; bitmap.SetPixel(x-1,y-1,Color.FromArgb(r,g,b)); } this.pictureBox1.Image=bitmap; } 2.5图片的显示方式: private void shiheView() { //图片的显示方式 double iPictureBoxWidth = this.pictureBox1.Width; double iPictureBoxHeight = this.pictureBox1.Height; double iImageWidth = this.pictureBox1.Image.Size.Width; double iImageHeight = this.pictureBox1.Image.Size.Height; // 如果图片长小于图片框长 if(iImageWidth<=iPictureBoxWidth && iImageHeight<=iPictureBoxHeight) { this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;//图片居中显示 } // 如果图片高小于图片框高 else if(iImageHeight>=iPictureBoxHeight && iImageWidth>=iPictureBoxWidth) { this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;//图片全图片框显示 } //如果图片长和高都大于图片框长和高 else if(iImageWidth<=iPictureBoxWidth && iImageHeight>=iPictureBoxHeight) { this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Normal;//图片正常显示 } else { this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;//图片自动大小显示 } } 2.6对图片进行明暗度,对比度,色相,饱和度的调整,此功能还没有实现。 5结束语 通过这次的课程设计,我对程序的设计有了切身的体会,也让我对C#2003编程语言这门课程有了一定的了解。而在这次的设计过程中,也让我了解到了我对这门课程掌握了多少。通过对这次的设计,也讓我对程序的设计有了初步的认识,在设计的过程中让我让我感觉到了很多的知识点是还没有掌握的。 本系统在功能上基本上能达到一定的应用要求,但是在程序还有很多的不足之处:首先来说在运行的时候占用的CPU和内存(软件不大,但是占用的资源比较多,还没达到怎样编程来实现及时的释放所占用的资源)比较多,而且有时运行的时候还会偶尔出现一些错误,有时会出现屏幕闪烁的情况,但是这些错误和问题对于目前我的能来来说还不能解决,但是我会多多的学习来把这个软件搞好,希望能达到真正可以使用的目的。而在功能上也有一些功能还不能实现,比如说:对浏览的图片删除(在删除图片是可以删除,但是在浏览时由于删除了这张相片不能继续浏览而出错,所以从根本上没能达到删除了图片还可以继续的重复浏览下去),而在保存的时候不能保存在设置窗口所设置的路径这也是一大缺陷,还有就是在设置窗口上也有很多的问题还没有解决(比如说:像在打上勾的复选框上这个功能就变成灰色的而不能用,还有就是不能让设置能保存起来,直到改变设置的时候才改动。)在图片的编辑上(对图片的对比度、明暗度、饱和度进行调整、这也是本软件到目前为止还没有实现的功能)。在图片的放大和缩小的时候也出现了些问题(图片可以放大缩小,但是在放大或者缩小后回到原来的大小的时候,图片的质量也就改变了,没能从根本上达到把图片改变后在改变回来而图片的清晰度和显示质量没有改变。在抓图功能上也有小小的问题(有时双击截图的时候会出现错误、这可能是双击的太快而造成的)。 在界面上使用起来不是很符合平时的使用习惯,这点我会在更多的调试使用过程中不断的改进。 从整个的设计过程中,我可以清楚的知道我对于编程我还不是很熟练,有时在编写程序的时候很多的方法还不是很会用、而且很多的基本的代码也不是能背着书写下来。同时在这次设计过程中有遇到了很多的问题:比如在图片自动播放的时候怎样实现图片随机的动态显示?我通过向同学了解了随奇函数的用法、并对动态显示图片的函数放在一数组中来实现动态选择来显示出来。在图片的放大和缩小的时候成在着不能成倍的在原来改变的基础上增大或减小?也是想同学讨教了这样的算法来解决的,在整个设计的途中,基本很多都向同学请教的。不过在整个软件设计的过程中有很多的功能都是在网上找了很多的代码来一一看懂后在进行修改调试再把它们合成起来实现功能。同时也在图书馆查看了很多的图书来找其中一些功能的实现代码。 通过这样的课程设计使我不但能独立的去发现问题并解决问题,也让我知道这样让我学会了应用一切资源来帮助自己设计,同时在学到很多东西的同时也然我感觉到了我所学的东西越来越少。仿佛还有很多的东西都不会,所以,只有在今后的学习过程中不断的加强对知识点的掌握,还要多看书,多多的上网查找资料,并且在要上机过程中多多的编写程序并进行运行调试,从而加强对编程语言的掌握。 6参考文献 [1] 《C#应用程序开发》上海科学普及出版社.主编:秦斌 曾斌;2004.3 [2] 《Visual C#.NET应用编程150例》.电子工业出版社.尹立宏.2003.8 [3] 《Microfoft Visual C#.NET 2003开发技巧大全》中国水利水电出版社.杨会珍 范书义.2005.4 [4] 网上搜索的相关代码 总控模块 输出模块 处理模块 输入模块 图片另 存 为 控制窗口 图片处理 图片的显示方式 图片的滤镜效果 幻灯播放控制 图片浏览 搜索图片文件 图片文件管理 从文件夹拖进 屏幕抓图截图 打开文件夹添加 设置窗口 图片浏览窗口 图片处理窗口 对比度亮度 色相饱和度 居中全屏自动大小 浮雕黑白反色 雾化锐化柔化 打开音乐播放器 打开背景音乐 打开图片动态显示 播放暂停 放大缩小 上一张下一张 打开百度搜索 文件夹搜索 退出 复制图片文件到 图片另存为 删除图片文件 打开图片文件 图3-8 系统功能模块结构图 PAGE 0
/
本文档为【C#图片浏览器C#设计报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索