科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件C# GDI+编程之基础篇(2)

C# GDI+编程之基础篇(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

下面,我们来讨论实际中的使用情况。我将在本文示例应用程序中添加下列功能:

来源:soft6 2008年5月16日

关键字: 编程 GDI+ C# Windows

  • 评论
  • 分享微博
  • 分享邮件

三、实际开发中的图像操作
下面,我们来讨论实际中的使用情况。我将在本文示例应用程序中添加下列功能:
1. 以用户指定的格式保存图像。
2. 根据从菜单下选择的百分比放大图像。
3. 创建一个加载图像的略缩图。
相应的菜单操作如下所示:
mnuSave—文件菜单下保存图像的子菜单。

mnu200Zoom—放大图像200%。

mnuThumbNail—创建图像的一个略缩图。
下面是处理菜单项mnuSave的Click事件相应的方法:
private void mnuSave_Click(object sender,System.EventArgs e)

...{

//如果图像已经创建

if(curImage == null)

return;

//调用SaveFileDialog对话框

SaveFileDialog saveDlg = new SaveFileDialog();

saveDlg.Title = "Save Image As";

saveDlg.OverwritePrompt = true;

saveDlg.CheckPathExists = true;

saveDlg.Filter =

"Bitmap File(*.bmp)|*.bmp|" +

"Gif File(*.gif)|*.gif|" +

"JPEG File(*.jpg)|*.jpg|" +

"PNG File(*.png)|*.png" ;

saveDlg.ShowHelp = true;

//如果选择,则进行保存

if(saveDlg.ShowDialog() == DialogResult.OK)

...{

//得到用户选择的文件名

string fileName = saveDlg.FileName;

//得到文件扩展名

string strFilExtn =fileName.Remove(0,fileName.Length - 3);

//保存文件

switch(strFilExtn)

...{

case "bmp":

curImage.Save(fileName, ImageFormat.Bmp);

break;

case "jpg":

curImage.Save(fileName, ImageFormat.Jpeg);

break;

case "gif":

curImage.Save(fileName, ImageFormat.Gif);

break;

case "tif":

curImage.Save(fileName, ImageFormat.Tiff);

break;

case "png":

curImage.Save(fileName, ImageFormat.Png);

break;

default:

break;

}

}

}
首先,以可接收的扩展名显示这个保存对话框。然后,由从该对话框返回的文件名检索相应的扩展名。最后,根据该扩展名,使用相应的图像格式参数调用Save()方法。
接下来,我们分析菜单项mnu200Zoom相应的处理器。首先,让我们在应用程序级添加下列以粗体显示的一行:
private double curZoom=1.0;

private Image curImage=null;//用于存储当前图像

private int i = 0;//用于把屏幕重画操作与缩略图绘制部分区别开来

然后,必须对mnuLoad处理代码作少许调整,如下所示:

private void mnuLoad_Click(object sender,System.EventArgs e)

...{

//创建OpenFileDialog

OpenFileDialog opnDlg = new OpenFileDialog();

//设置一个图像类型过滤器

opnDlg.Filter =

"All Image files|*.bmp;*.gif;*.jpg;*.ico;"+

"*.emf;,*.wmf|Bitmap Files(*.bmp;*.gif;*.jpg;"+

"*.ico)|*.bmp;*.gif;*.jpg;*.ico|"+

"Meta Files(*.emf;*.wmf;*.png)|*.emf;*.wmf;*.png";

opnDlg.Title = "打开图像文件";

opnDlg.ShowHelp = true;

//如果OK,选择它

if(opnDlg.ShowDialog() == DialogResult.OK)

...{

//读取当前选择的文件名

curFileName = opnDlg.FileName;

//使用Image.FromFile创建图像对象

try

...{

curImage = Image.FromFile(curFileName);

}

catch(Exception exp)

...{

MessageBox.Show(exp.Message);

}

}

//改变AutoScrollMinSize属性

this.AutoScrollMinSize = new Size

((int)(curImage.Width * curZoom),

(int)(curImage.Height * curZoom));

i++;

//重新绘制表单

Invalidate();

}

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章