图像处理控件ImageGear for .NET教程:C# WPF应用程序创建示例ImageGear for .NET提供了目前最先进的用于创建、控制、更加安全、高质量的成像应用程序。使用ImageGear for .NET可以轻松添加一个强大的图像功能到应用程序中。ImageGear支持目前市面上所有常见的图像文件格式,对于.NET项目开发,比如Windows Forms应用程序、WPF应用程序、ASP.NET Web Forms应用程序还是ASP.NET Web Service应用程序的开发提供了全面的图像处理功能。
本文将讲解如何使用ImageGear for .NET创建一个简单的C# WPF应用程序,这个应用程序将会实现加载、显示、保存图像的功能。在这个部分中还将展示如何启用ImageGear WPF 功能(比如高清照片格式支持),并在简单的示例应用程序中使用。由于内容有点长,将会分成几篇文章,教程中使用的是VS2010版。
C# WPF应用程序创建示例(1)——创建项目
一、启动Visual Studio .NET,并进行下面的操作:
1、选择新建一个项目
2、选择Visual C#
3、选择Windows作为项目类型
4、选择Windows Forms Application作为模版
5、为本次教程的项目命名为“IG Tutorial”,单击完成。
(图1)
二、执行了上面的步骤之后,接下来就是选择工具了。
1、在.NET Framework Components面板中,选择浏览按钮。
2、导航到ImageGear for .NET v21\Bin,选择ImageGear21.Windows.Forms.dll,点击打
开。
3、ImGearMagnifier、ImGearPageView、ImGearPan、ImGearThumbnailCtl控件将会被
添加到组件列表中,然后确保都选中了,然后点击“OK”。
(图2)
三、接下来就是添加引用到这个项目需要的核心ImageGear for .NET 组件上,并封装一些较为常
用的格式。
1、在Solution Explorer中,在“引用”上右键单击,并选择“添加引用”。
2、选择Browse选项卡。
3、导航到“ImageGear for .NET v21\Bin”目录并选择下面的选项:
ImageGear21.Core.dll
ImageGear21.Formats.Common.dll
ImageGear21.Windows.Forms.dll
4、点击“OK”。
这个时候就需要考虑在Solution Explorer中需要列出的组件了。
设计窗体
一、创建在窗体中的菜单
1、在Windows Forms工具箱中,拖一个MenuStrip控件到这个窗体中。
2、创建三个菜单,命名为File、View、Processing。
3、在File菜单下,添加Load Page 和Exit。
4、在View菜单下,添加Zoom In 和Zoom Out。
5、在Processing菜单下,添加Rotate 90、Rotate 180、Rotate 270。
6、对于本次的教程,保持控件默认的名称,并双击每个项目,创建一个控制器。
二、在窗体中添加ImageGear Page View控件
1、在Windows Forms工具箱中,拖拽ImGearPageView控件到窗体上。
2、设置imGearPageView1控件的Dock属性为“fill”,这个将会使得控件以窗体来重新调
整。
3、保留默认的控件名称,比如imGearPageView1控件。现在窗体的外观就会如下所示:
(图1)
开发应用程序
一、首先,添加必要的using语句。
1、通过右键单击窗口打开窗口代码,选择查看代码。
2、在代码的最上面,添加下面的语句。
using System.IO;
using System.Diagnostics;
using ImageGear;
using ImageGear.Core;
using ImageGear.Windows.Forms;
using ImageGear.Display;
using ImageGear.Processing;
using ImageGear.Formats;
二、添加下面的域到Form1:
// holds the image data
private ImGearPage imGearPage = null;
// controls how the page is displayed
private ImGearPageDisplay imGearPageDisplay = null;
三、如果你使用的是运行时授权,调用InitializeComponent之前,添加授权初始化代码到Form1
构造函数(Form1())。如果你使用的是评估或开发(工具包)授权的话,就不需要。
//***The SetSolutionName, SetSolutionKey and possibly the SetOEMLicenseKey
//methods must be called to distribute the runtime.***
//ImGearLicense.SetSolutionName("YourSolutionName");
//ImGearLicense.SetSolutionKey(12345, 12345, 12345, 12345);
//Manually Reported Runtime licenses also require the following method //call to SetOEMLicenseKey.
//ImGearLicense.SetOEMLicenseKey("2.");
四、在之前代码的下面,添加下面的调用来初始化引用的格式。
// Support for common formats:
ImGearCommonFormats.Initialize();
五、现在在导入页面菜单控制器中添加下面的代码:
private void loadPageToolStripMenuItem_Click(object sender, EventArgs e) {
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter =
ImGearFileFormats.GetSavingFilter(ImGearSavingFormats.UNKNOWN);
if (DialogResult.OK == openFileDialog1.ShowDialog())
{
using (FileStream stream =
new FileStream(openFileDialog1.FileName, FileMode.Open,
FileAccess.Read, FileShare.Read))
{
try
{
// Load the image into the page
imGearPage = ImGearFileFormats.LoadPage(stream, 0);
}
catch (ImGearException ex)
{
Debug.WriteLine(ex.Message);
}
}
if (null != imGearPage && null != imGearPage.DIB &&
!imGearPage.DIB.IsEmpty())
{
// create a new page display
imGearPageDisplay = new ImGearPageDisplay(imGearPage);
// associate the page display with the page view
imGearPageView1.Display = imGearPageDisplay;
// cause the page view to repaint
imGearPageView1.Invalidate();
}
}
}
六、在去的放大菜单项目而创建的处理程序中,添加的代码到程序中。
if (null != imGearPageDisplay && !imGearPageDisplay.Page.DIB.IsEmpty()) {
// Get the current zoom info
ImGearZoomInfo igZoomInfo =
imGearPageDisplay.GetZoomInfo(imGearPageView1);
// Increase the zoom
igZoomInfo.Horizontal.Value = igZoomInfo.Horizontal.Value * 1.25;
igZoomInfo.Vertical.Value = igZoomInfo.Vertical.Value * 1.25;writeline教程
igZoomInfo.Horizontal.Fixed = true;
igZoomInfo.Vertical.Fixed = true;
// Set the new zoom values and repaint the view
imGearPageDisplay.UpdateZoomFrom(igZoomInfo);
imGearPageView1.Invalidate();
}
七、添加下面的代码到缩小单击处理程序。
if (null != imGearPageDisplay && !imGearPageDisplay.Page.DIB.IsEmpty()) {
// Get the current zoom info
ImGearZoomInfo igZoomInfo =
imGearPageDisplay.GetZoomInfo(imGearPageView1);
igZoomInfo.Horizontal.Value = igZoomInfo.Horizontal.Value * (1/1.25); igZoomInfo.Vertical.Value = igZoomInfo.Vertical.Value * (1/1.25);
igZoomInfo.Horizontal.Fixed = true;
igZoomInfo.Vertical.Fixed = true;
// Set the new zoom values and repaint the view
imGearPageDisplay.UpdateZoomFrom(igZoomInfo);
imGearPageView1.Invalidate();
}
八、在Rotate 90点击处理应用程序中添加下面的代码。
if (null != imGearPageDisplay && null != imGearPage
&& !imGearPageDisplay.Page.DIB.IsEmpty())
try
{
ImGearProcessing.Rotate(imGearPage, ImGearRotationValues.VALUE_90);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论