原創企業級控件庫之圖片瀏覽控件
原創企業級控件庫之圖片瀏覽控件
發布日期:2010年12月18日星期六作者:EricHu
在上兩篇:我介紹了原創企業級控件庫之組合查詢控件 和原創企業級控件庫之大數據量分頁控件,受到了很多朋友的支持,給了我很大的動力,在此我特表感謝。有的朋友要求把源碼提供上來,我在第一篇就講了,源碼會在我這個系列講完之后提供,大家先別著急,如果你確實需要,可以時常關注此系列,謝謝大家。其實,在系列文章中,我已把核心代碼貢獻出來了。學習有時是參考別人與實踐別人的勞動成果的過程,你光把別人的代碼拿過來用用,不研究其實質,進步很慢。
這篇我將給大家介紹:企業級控件庫之圖片瀏覽控件。
摘要
我想大家用過或聽說過ACDSee 對于圖片瀏覽的強大功能,我接下來介紹的控件與ACDSee相比,可謂是天壤之別,雖沒有其強大的功能,但用在一些常用的軟件上,提供一些常用的基本功能還是可以的。同時,我只提供一個模子,代碼開源,你可以隨便修改以滿足自己的需要。
成就別人、等于成就自己。我沒什么要求,歡迎大家多多支持與評論,覺得不錯的,記得點擊文章左下角的”關注博客”,就這么簡單。同時,你要用什么好的想法,也可以與我交流,謝謝。
圖片瀏覽控件運行效果如下圖:

本控件類圖:

本控件類詳細信息:

本控件核心代碼:
#region 滾動鼠標滾輪實現鼠標縮放
/************************************************************
* 滾動鼠標滾輪實現鼠標縮放
************************************************************/
privatevoid picView_MouseWheel(object sender, MouseEventArgs e)
{
switch (keyAction)
{
case1:
if (e.Delta >0&& picView.Width <10000)
{
zoom(e.Location, 1100);
}
elseif (e.Delta <0&& picView.Image.Width / picView.Width <5)
{
zoom(e.Location, 900);
}
CenterImage();//使圖片居中顯示
break;
case2:
if (hScrollBarImageView.Visible)
hScrollBarImageView.Value = (hScrollBarImageView.Value - e.Delta <0?0 : (hScrollBarImageView.Value - e.Delta > hScrollBarImageView.Maximum ? hScrollBarImageView.Maximum : hScrollBarImageView.Value - e.Delta));
break;
default:
if (vScrollBarImageView.Visible)
vScrollBarImageView.Value = (vScrollBarImageView.Value - e.Delta <0?0 : (vScrollBarImageView.Value - e.Delta > vScrollBarImageView.Maximum ? vScrollBarImageView.Maximum : vScrollBarImageView.Value - e.Delta));
break;
}
}
#endregion
下面給出整個控件的完整代碼及窗體調用方法:
一、控件完整代碼:
#region 版權信息
/*---------------------------------------------------------------------*
// Copyright (C) 2010 http://www.rzrgm.cn/huyong
// 版權所有。
// 項目 名稱:《Winform通用控件庫》
// 文 件 名: UcImageView.cs
// 類 全 名: DotNet.Controls.UcImageView
// 描 述: 圖像顯示控件
// 創建 時間: 2010-08-05
// 創建人信息: [**** 姓名:胡勇 QQ:406590790 E-Mail:406590790@qq.com *****]
*----------------------------------------------------------------------*/
#endregion
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Printing;
using DotNet.Common;
namespace DotNet.Controls
{
///<summary>
/// 圖像顯示控件
/// UcImageView
///
/// 修改紀錄
/// 2010-11-6 胡勇 優化相關代碼。
/// 2010-8-5 胡勇 創建圖像顯示控件
///
///<author>
///<name>胡勇</name>
///<QQ>80368704</QQ>
///<Email>80368704@qq.com</Email>
///</author>
///</summary>
publicpartialclass UcImageView : UserControl
{
#region 構造函數
public UcImageView()
{
InitializeComponent();
//記錄PnlMain的size
panelOldSize.X = PnlMain.Width;
panelOldSize.Y = PnlMain.Height;
}
#endregion
#region 公共變量
private Point StartP =new Point(0, 0);
privatebool isMouseDown =false;
private Point panelOldSize =new Point(0, 0);
privateint imgIndexBy1000 =0;
privateint keyAction =0;
privateint w, h;
#endregion
#region 公共事件
[Category("圖片瀏覽"), Description("移動或漫游圖片的Checked事件Changed時發生。"), Browsable(true)]
publicevent EventHandler OnMnuMoveImageCheckedChanged;
#endregion
#region 公共方法
#region 增加圖片到PictureBox:void AddImage(string fileName, bool isAsync)
///<summary>
/// 增加要顯示的圖片
///</summary>
///<param name="fileName">圖片路徑全名</param>
///<param name="isAsync">true:異步方式加載圖片</param>
publicvoid AddImage(string fileName, bool isAsync)
{
if (isAsync)//異步加載圖片
{
//圖片異步加載完成后的處理事件
picView.LoadCompleted +=new AsyncCompletedEventHandler(picView_LoadCompleted);
//圖片加裁時,顯示等待光標
picView.UseWaitCursor =true;
//采用異步加裁方式
picView.WaitOnLoad =false;
//開始異步加裁圖片
picView.LoadAsync(fileName);
}
else
{
picView.Image = Image.FromFile(fileName);//載入圖片
}
InitialImage();
}
///<summary>
/// 增加要顯示的圖片
///</summary>
///<param name="img">Image</param>
publicvoid AddImage(Image img)
{
if (img !=null)
{
picView.Image = img;
InitialImage();
}
else
{
picView =null;
}
}
#endregion
#region 得到ImageView中的圖片:Image GetImageInImageView()
///<summary>
/// 得到ImageView中的圖片
///</summary>
///<returns>Image</returns>
public Image GetImageInImageView()
{
if (picView.Image !=null)
{
return picView.Image;
}
else
{
returnnull;
}
}
#endregion
#region 放大、縮小、適應圖片大小、移動圖片、左旋轉圖片與右旋轉圖片
///<summary>
/// 放大圖片
///</summary>
publicvoid ZoomInImage()
{
if (picView.Image !=null)
{
if (picView.Width <5000)
{
zoom(picView.Location, 1100);
CenterImage();
}
else
{
MessageBox.Show("對不起,不能再進行放大!","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
}
///<summary>
/// 縮小圖片
///</summary>
publicvoid ZoomOutImage()
{
if (picView.Image !=null)
{
if (picView.Image.Width / picView.Width <5&&-7<0)
{
zoom(picView.Location, 900);
CenterImage();
}
else
{
MessageBox.Show("對不起,不能再進行縮小!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
///<summary>
/// 適應圖片大小
///</summary>
publicvoid FitImageSize()
{
if (picView.Image !=null)
{
float r1 = (float)this.w /this.picView.Width;
float r2 = (float)this.h /this.picView.Height;
this.picView.Scale(r1, r2);
this.picView.Left = (this.PnlMain.Width -this.picView.Width) /2;
this.picView.Top = (this.PnlMain.Height -this.picView.Height) /2;
this.picView.Cursor = Cursors.Default;
CenterImage();
}
}
///<summary>
/// 移動圖片
///</summary>
publicvoid MoveImage()
{
mnuMy.Checked = MnuMoveImageChecked;
}
///<summary>
/// 左旋轉圖片
///</summary>
publicvoid LeftRotateImage()
{
if (picView.Image !=null)
{
picView.Image.RotateFlip(RotateFlipType.Rotate90FlipX);
picView.Refresh();
CenterImage();
}
}
///<summary>
/// 右旋轉圖片
///</summary>
publicvoid RightRotateImage()
{
if (picView.Image !=null)
{
picView.Image.RotateFlip(RotateFlipType.Rotate90FlipY);
picView.Refresh();
CenterImage();
}
}
#endregion
#endregion
#region 公共屬性
privatebool _mnuMoveImageChecked;
///<summary>
/// 確定漫游菜單項是否處于選中狀態(用于是否可以移動或漫游圖片)
///</summary>
[Category("圖片瀏覽"), Description("確定漫游菜單項是否處于選中狀態(用于是否可以移動或漫游圖片)"),Browsable(false)]
publicbool MnuMoveImageChecked
{
get
{
return _mnuMoveImageChecked;
}
set
{
_mnuMoveImageChecked = value;
this.mnuMy.Checked = _mnuMoveImageChecked;
}
}
privatebool _mnuPrintVisible =true; //默認可見
///<summary>
/// 確定打印菜單項是可見還是隱藏
///</summary>
[Category("圖片瀏覽"), Description("確定打印菜單項是可見還是隱藏"), Browsable(true)]
publicbool MnuPrintVisible
{
get
{
return _mnuPrintVisible;
}
set
{
_mnuPrintVisible = value;
this.mnuPrint.Visible = _mnuPrintVisible;
}
}
#endregion
#region 私有方法
privatevoid picView_LoadCompleted(object sender, AsyncCompletedEventArgs e)
{
//圖片加載完成后,將光標恢復
picView.UseWaitCursor =false;
}
#region 圖片縮放
///<summary>
/// 圖片縮放
///</summary>
///<param name="center">縮放中心點</param>
///<param name="zoomIndexBy1000">縮放倍率的1000倍</param>
privatevoid zoom(Point center, int zoomIndexBy1000)
{
//記錄原始的picView的Size
Point oldSize =new Point(picView.Width, picView.Height);
//實施放大(以x方向為基準計算得出y方向大小,防止多次運算誤差積累使Image和picView的尺寸不匹配)
picView.Width = picView.Width * zoomIndexBy1000 /1000;
picView.Height = picView.Width * imgIndexBy1000 /1000;
//重新定位標定后的picView位置
picView.Left -= ((picView.Width - oldSize.X) * (center.X *1000/ oldSize.X)) /1000;
picView.Top -= ((picView.Height - oldSize.Y) * (center.Y *1000/ oldSize.Y)) /1000;
//重新設定橫向滾動條最大值和位置
if (picView.Width - PnlMain.Width >0)
{
hScrollBarImageView.Visible =true;
hScrollBarImageView.Maximum = picView.Width - PnlMain.Width + vScrollBarImageView.Width +2;
hScrollBarImageView.Value = (picView.Left >=0?0 : (-picView.Left > hScrollBarImageView.Maximum ? hScrollBarImageView.Maximum : -picView.Left));
}
else
{
hScrollBarImageView.Visible =false;
}
//重新設定縱向滾動條最大值和位置
if (picView.Height - PnlMain.Height >0)
{
vScrollBarImageView.Visible =true;
vScrollBarImageView.Maximum = picView.Height - PnlMain.Height + hScrollBarImageView.Width +2;
vScrollBarImageView.Value = (picView.Top >=0?0 : (-picView.Top > vScrollBarImageView.Maximum ? vScrollBarImageView.Maximum : -picView.Top));
}
else
{
vScrollBarImageView.Visible =false;
}
}
#endregion
#region 圖片加裁到PictureBox中后,對其進行初始化操作
///<summary>
/// 圖片加裁到PictureBox中后,對其進行初始化操作
///</summary>
privatevoid InitialImage()
{
ImageChange();//得到最適合顯示的圖片尺寸
this.w =this.picView.Width;
this.h =this.picView.Height;
//設定圖片位置
picView.Location =new Point(0, 0);
//設定圖片初始尺寸
picView.Size = picView.Image.Size;
//設定圖片縱橫比
imgIndexBy1000 = (picView.Image.Height *1000) / picView.Image.Width;
//設定滾動條
if (picView.Width - PnlMain.Width >0)
{
hScrollBarImageView.Maximum = picView.Width - PnlMain.Width + vScrollBarImageView.Width +2;//+ hScrollBarImageView.LargeChange
hScrollBarImageView.Visible =true;
}
if (picView.Height - PnlMain.Height >0)
{
vScrollBarImageView.Maximum = picView.Height - PnlMain.Height + hScrollBarImageView.Height +2;//+ vScrollBarImageView.LargeChange
vScrollBarImageView.Visible =true;
}
CenterImage();
}
#endregion
#region 居中與全屏顯示圖片
///<summary>
/// 使圖片全屏顯示
///</summary>
privatevoid FullImage()
{
if (picView.Image.Width < picView.Width && picView.Image.Height < picView.Height)
{
picView.SizeMode = PictureBoxSizeMode.CenterImage;
}
CalculateAspectRatioAndSetDimensions();
}
///<summary>
/// 保持圖片居中顯示
///</summary>
privatevoid CenterImage()
{
picView.Left = PnlMain.Width /2- picView.Width /2;
picView.Top = PnlMain.Height /2- picView.Height /2;
}
#endregion
#region CalculateAspectRatioAndSetDimensions
///<summary>
/// CalculateAspectRatioAndSetDimensions
///</summary>
///<returns>double</returns>
privatedouble CalculateAspectRatioAndSetDimensions()
{
double ratio;
if (picView.Image.Width > picView.Image.Height)
{
ratio = picView.Image.Width / picView.Image.Height;
picView.Height = Convert.ToInt16(double.Parse(picView.Width.ToString()) / ratio);
}
else
{
ratio = picView.Image.Height / picView.Image.Width;
picView.Width = Convert.ToInt16(double.Parse(picView.Height.ToString()) / ratio);
}
return ratio;
}
#endregion
#region 用于適應圖片大小
///<summary>
/// 用于適應圖片大小
///</summary>
privatevoid ImageChange()
{
this.picView.Height =this.picView.Image.Height;
this.picView.Width =this.picView.Image.Width;
float cx =1;
if (this.picView.Image.Height >this.PnlMain.Height) cx =
(float)(this.PnlMain.Height -10) / (float)this.picView.Image.Height;
this.picView.Scale(cx);
this.picView.Left = (this.PnlMain.Width -this.picView.Width) /2;
this.picView.Top = (this.PnlMain.Height -this.picView.Height) /2;
}
#endregion
#endregion
#region 窗口(PnlMain)尺寸改變時圖像的顯示位置控制
/************************************************************
* 窗口(PnlMain)尺寸改變時圖像的顯示位置控制
************************************************************/
privatevoid PnlMain_Resize(object sender, EventArgs e)
{
//對左右的方向操作(左右)
if (picView.Width <= PnlMain.Width) //圖片左右居中
{
picView.Left = (PnlMain.Width - picView.Width) /2;
hScrollBarImageView.Visible =false;
}
elseif (picView.Left <0&& picView.Width + picView.Left < PnlMain.Width)//圖片靠右
{
picView.Left = PnlMain.Width - picView.Width;
hScrollBarImageView.Visible =true;
}
elseif (picView.Left >0&& picView.Width + picView.Left > PnlMain.Width)//圖片靠左
{
picView.Left =0;
hScrollBarImageView.Visible =true;
}
else//保證顯示的中心圖樣不變(左右)
{
picView.Left += (PnlMain.Width - panelOldSize.X) /2;
hScrollBarImageView.Visible =true;
}
//設定橫向滾動條最大值
hScrollBarImageView.Maximum = (picView.Width - PnlMain.Width >0? picView.Width - PnlMain.Width + hScrollBarImageView.Maximum +2 : 0);
//設定橫向滾動條Value
hScrollBarImageView.Value = (picView.Left >=0?0 : -picView.Left);
//重置舊的pannel1的Width
panelOldSize.X = PnlMain.Width;
//對上下的方向操作(上下)
if (picView.Height <= PnlMain.Height)//圖片上下居中
{
picView.Top = (PnlMain.Height - picView.Height) /2;
vScrollBarImageView.Visible =false;
}
elseif (picView.Top <0&& picView.Height + picView.Top < PnlMain.Height)//圖片靠下
{
picView.Top = PnlMain.Height - picView.Height;
vScrollBarImageView.Visible =true;
}
elseif (picView.Top >0&& picView.Height + picView.Top > PnlMain.Height)//圖片靠上
{
picView.Top =0;
vScrollBarImageView.Visible =true;
}
else//保證顯示的中心圖樣不變(上下)
{
picView.Top += (PnlMain.Height - panelOldSize.Y) /2;
vScrollBarImageView.Visible =true;
}
//設定縱向滾動條最大值
vScrollBarImageView.Maximum = (picView.Height - PnlMain.Height >0? picView.Height - PnlMain.Height + vScrollBarImageView.Maximum +2 : 0);
//設定縱向滾動條Value
vScrollBarImageView.Value = (picView.Top >=0?0 : -picView.Top);
//重置舊的pannel1的Height
panelOldSize.Y = PnlMain.Height;
}
#endregion
#region 滾動條滾動時,圖片移動
/************************************************************
* 滾動條滾動時,圖片移動
************************************************************/
privatevoid vScrollBarImageView_ValueChanged(object sender, EventArgs e)
{
picView.Top =-vScrollBarImageView.Value;
}
privatevoid hScrollBarImageView_ValueChanged(object sender, EventArgs e)
{
picView.Left =-hScrollBarImageView.Value;
}
#endregion
#region PictureBox 鼠標按下、鼠標進入、松開與移動事件
privatevoid picView_MouseDown(object sender, MouseEventArgs e)
{
StartP = e.Location;
isMouseDown =true;
}
privatevoid picView_MouseEnter(object sender, EventArgs e)
{
picView.Focus();
}
privatevoid picView_MouseMove(object sender, MouseEventArgs e)
{
if (mnuMy.Checked && isMouseDown)
{
this.picView.Cursor = Cursors.SizeAll;
//計算出移動后兩個滾動條應該的Value
int x =-picView.Left + StartP.X - e.X;
int y =-picView.Top + StartP.Y - e.Y;
//如果滾動條的value有效則執行操作;
if (x >=-PnlMain.Width +10&& x <= picView.Width -10)
{
if (hScrollBarImageView.Visible)
{
if (x >0)
hScrollBarImageView.Value = x > hScrollBarImageView.Maximum ? hScrollBarImageView.Maximum : x;
picView.Left =-x - (vScrollBarImageView.Visible && x <0? vScrollBarImageView.Width : 0);
}
else
picView.Left =-x;
}
if (y >=-PnlMain.Height +10&& y <= picView.Height -10)
{
if (vScrollBarImageView.Visible)
{
if (y >0)
vScrollBarImageView.Value = y > vScrollBarImageView.Maximum ? vScrollBarImageView.Maximum : y;
picView.Top =-y - (hScrollBarImageView.Visible && y <0? hScrollBarImageView.Height : 0);
}
else
picView.Top =-y;
}
/*****************************************************
* 給予調整滾動條調整圖片位置
*****************************************************
計算出移動后兩個滾動條應該的Value*/
/*int w = hScrollBarImageView.Value + StartP.X -e.X;
int z = vScrollBarImageView.Value + StartP.Y -e.Y;
如果滾動條的value有效則執行操作;
否則將滾動條按不同情況拉到兩頭
if (w >= 0 && w <= hScrollBarImageView.Maximum)
{
hScrollBarImageView.Value = w;
}
else
{
hScrollBarImageView.Value = (w < 0 ? 0 : hScrollBarImageView.Maximum);
}
if (z >= 0 && z <= vScrollBarImageView.Maximum)
{
vScrollBarImageView.Value = z;
}
else
{
vScrollBarImageView.Value = (z < 0 ? 0 : vScrollBarImageView.Maximum);
}*/
}
else
{
this.picView.Cursor = Cursors.Default;
}
}
privatevoid picView_MouseUp(object sender, MouseEventArgs e)
{
isMouseDown =false;
}
#endregion
#region 滾動鼠標滾輪實現鼠標縮放
/************************************************************
* 滾動鼠標滾輪實現鼠標縮放
************************************************************/
privatevoid picView_MouseWheel(object sender, MouseEventArgs e)
{
switch (keyAction)
{
case1:
if (e.Delta >0&& picView.Width <10000)
{
zoom(e.Location, 1100);
}
elseif (e.Delta <0&& picView.Image.Width / picView.Width <5)
{
zoom(e.Location, 900);
}
CenterImage();//使圖片居中顯示
break;
case2:
if (hScrollBarImageView.Visible)
hScrollBarImageView.Value = (hScrollBarImageView.Value - e.Delta <0?0 : (hScrollBarImageView.Value - e.Delta > hScrollBarImageView.Maximum ? hScrollBarImageView.Maximum : hScrollBarImageView.Value - e.Delta));
break;
default:
if (vScrollBarImageView.Visible)
vScrollBarImageView.Value = (vScrollBarImageView.Value - e.Delta <0?0 : (vScrollBarImageView.Value - e.Delta > vScrollBarImageView.Maximum ? vScrollBarImageView.Maximum : vScrollBarImageView.Value - e.Delta));
break;
}
}
#endregion
#region 窗體按鍵事件處理
privatevoid UcImageView_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control)
keyAction =1;
elseif (e.Shift)
keyAction =2;
}
privatevoid UcImageView_KeyUp(object sender, KeyEventArgs e)
{
keyAction =0;
}
privatevoid picView_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control)
keyAction =1;
elseif (e.Shift)
keyAction =2;
else
keyAction =3;
}
privatevoid picView_KeyUp(object sender, KeyEventArgs e)
{
keyAction =0;
}
#endregion
#region 快捷菜單事件代碼
//放大圖片
privatevoid mnuZoomIn_Click(object sender, EventArgs e)
{
this.ZoomInImage();
}
//縮小圖片
privatevoid mnuZoomOut_Click(object sender, EventArgs e)
{
this.ZoomOutImage();
}
//適應圖片大小
privatevoid mnuFitSize_Click(object sender, EventArgs e)
{
this.FitImageSize();
}
//漫游圖片
privatevoid mnuMy_Click(object sender, EventArgs e)
{
MnuMoveImageChecked =!mnuMy.Checked;
this.MoveImage();
}
//左旋轉圖片
privatevoid mnuLeftRotate_Click(object sender, EventArgs e)
{
this.LeftRotateImage();
}
//右旋轉圖片
privatevoid mnuRightRotate_Click(object sender, EventArgs e)
{
this.RightRotateImage();
}
#region 打印圖片
//打印圖片
privatevoid mnuPrint_Click(object sender, EventArgs e)
{
if (picView.Image !=null)
{
PrintDialog printDgImageView =new PrintDialog();
/*設置紙張類型
PaperSize pg = new PaperSize("A3",297,420);
printDocImageView.DefaultPageSettings.PaperSize = pg;*/
PaperSize pg =new PaperSize("A3", 23, 33);
printDgImageView.Document = printDocImageView;
if (printDgImageView.ShowDialog() == DialogResult.OK)
{
try
{
printDocImageView.Print();
}
catch
{
//停止打印
printDocImageView.PrintController.OnEndPrint(printDocImageView, new System.Drawing.Printing.PrintEventArgs());
}
}
}
else
{
DialogHelper.ShowWarningMsg("對不起,沒有要打印的數據!");
}
}
privatevoid printDocImageView_PrintPage(object sender, PrintPageEventArgs e)
{
this.FitImageSize();//實際尺寸
if (picView.Image !=null)
{
e.Graphics.DrawImage(picView.Image, picView.Location.X, picView.Location.Y, picView.Width, picView.Height);
}
}
#endregion
#endregion
#region 窗體事件
privatevoid mnuMy_CheckedChanged(object sender, EventArgs e)
{
if (OnMnuMoveImageCheckedChanged !=null)
{
MnuMoveImageChecked =this.mnuMy.Checked;
OnMnuMoveImageCheckedChanged(sender, EventArgs.Empty);
}
}
#endregion
}
}
二、WinForm窗體調用方法完整代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DotNet.Common;
namespace DotNet.WinForm.Example
{
publicpartialclass FrmUcImageView : Form
{
public FrmUcImageView()
{
InitializeComponent();
}
privatevoid FrmUcImageView_Shown(object sender, EventArgs e)
{
try
{
ucImageViewTest.AddImage(Image.FromFile(Application.StartupPath +"\\windows7.jpg"));
}
catch(Exception ex)
{
DialogHelper.ShowErrorMsg(ex.Message);
}
}
privatevoid btnAdd_Click(object sender, EventArgs e)
{
openImgDlg.Filter ="Image Files(*.jpg;*.jpeg;*.tiff;*.gif)|*.jpg;*.gpeg;*.tiff;*.gif|All files (*.*)|*.*";//圖片文件的類型
if (openImgDlg.ShowDialog() == DialogResult.OK)
{
string FileName, pathName;
pathName = openImgDlg.FileName;
FileName = FileHelper.GetName(pathName);
ucImageViewTest.AddImage(Image.FromFile(pathName));
}
}
privatevoid btnZoomIn_Click(object sender, EventArgs e)
{
ucImageViewTest.ZoomInImage();
}
privatevoid btnZoomOut_Click(object sender, EventArgs e)
{
ucImageViewTest.ZoomOutImage();
}
privatevoid btnMy_Click(object sender, EventArgs e)
{
btnMy.Checked = ucImageViewTest.MnuMoveImageChecked =!btnMy.Checked;
ucImageViewTest.MoveImage();
}
privatevoid btnFitSize_Click(object sender, EventArgs e)
{
ucImageViewTest.FitImageSize();
}
privatevoid btnLeftRotate_Click(object sender, EventArgs e)
{
ucImageViewTest.LeftRotateImage();
}
privatevoid btnRightRotate_Click(object sender, EventArgs e)
{
ucImageViewTest.RightRotateImage();
}
privatevoid ucImageViewTest_OnMnuMoveImageCheckedChanged(object sender, EventArgs e)
{
//使ucImageViewDj中的快捷菜單中的漫游的選中狀態與當前窗口漫游按鈕的選中狀態保持一至
btnMy.Checked = ucImageViewTest.MnuMoveImageChecked;
}
privatevoid btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
作者:
RDIF
出處:
http://www.rzrgm.cn/huyong/
Email:
406590790@qq.com
QQ:
406590790
微信:
13005007127(同手機號)
框架官網:
http://www.guosisoft.com/
http://www.rdiframework.net/
框架其他博客:
http://blog.csdn.net/chinahuyong
http://www.rzrgm.cn/huyong
國思RDIF開發框架
,
給用戶和開發者最佳的.Net框架平臺方案,為企業快速構建跨平臺、企業級的應用提供強大支持。
關于作者:系統架構師、信息系統項目管理師、DBA。專注于微軟平臺項目架構、管理和企業解決方案,多年項目開發與管理經驗,曾多次組織并開發多個大型項目,在面向對象、面向服務以及數據庫領域有一定的造詣?,F主要從事基于
RDIF
框架的技術開發、咨詢工作,主要服務于金融、醫療衛生、鐵路、電信、物流、物聯網、制造、零售等行業。
如有問題或建議,請多多賜教!
本文版權歸作者和CNBLOGS博客共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,可以通過微信、郵箱、QQ等聯系我,非常感謝。

我想大家用過或聽說過ACDSee 對于圖片瀏覽的強大功能,我接下來介紹的控件與ACDSee相比,可謂是天壤之別,雖沒有其強大的功能,但用在一些常用的軟件上,提供一些常用的基本功能還是可以的。同時,我只提供一個模子,代碼開源,你可以隨便修改以滿足自己的需要。
成就別人、等于成就自己。我沒什么要求,歡迎大家多多支持與評論,覺得不錯的,記得點擊文章左下角的”關注博客”,就這么簡單。同時,你要用什么好的想法,也可以與我交流,謝謝。
浙公網安備 33010602011771號