📄 imagebrowser.cs
字号:
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
namespace CardGame
{
/// <summary>
/// ImageBrowser 的摘要说明。
/// </summary>
public class ImageBrowser : System.Windows.Forms.UserControl
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public ImageBrowser()
{
// 该调用是 Windows.Forms 窗体设计器所必需的。
InitializeComponent();
// TODO: 在 InitializeComponent 调用后添加任何初始化
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
//
// ImageBrowser
//
this.Name = "ImageBrowser";
this.Size = new System.Drawing.Size(296, 224);
this.Load += new System.EventHandler(this.ImageBrowser_Load);
}
#endregion
private void ImageBrowser_Load(object sender, System.EventArgs e)
{
}
public event EventHandler ItemSelected;
private bool showImages=false;
public bool ShowImages
{
get
{
return showImages;
}
set
{
if(value&&!showImages)
{
this.Controls.Clear();
if(imageList!=null)
{
Point[] points=ItemLocations(imageList.Images.Count,imageList.ImageSize);
for(int i=0;i<points.Length;i++)
{
ImageItem item=new ImageItem(i,imageList.Images[i]);
item.Location=points[i];
item.MouseDown+=new MouseEventHandler(item_MouseDown);
this.Controls.Add(item);
}
}
}
else if(!value&&showImages)
{
this.Controls.Clear();
}
showImages=value;
}
}
private Point[] ItemLocations(int TotalCount,Size ItemSize)
{
int wCount=Convert.ToInt32((this.Width+hSpace)/(ItemSize.Width+hSpace));
if(wCount==0)return null;
int hCount=Convert.ToInt32(TotalCount/wCount);
if(TotalCount%wCount>0)hCount+=1;
Point[] points=new Point[TotalCount];
for(int i=0;i<hCount;i++)
{
int dCount=((TotalCount-i*wCount)<wCount)?(TotalCount-i*wCount):wCount;
for(int j=0;j<dCount;j++)
{
points[j+i*wCount]=new Point(j*(hSpace+ItemSize.Width),i*(vSpace+ItemSize.Height));
}
}
return points;
}
public Color SelectedColor
{
get
{
return selectedColor;
}
set
{
selectedColor=value;
}
}
private int hSpace=8;
private int vSpace=8;
private ImageList imageList=null;
public int HSpace
{
get
{
return hSpace;
}
set
{
hSpace=value;
}
}
public int VSpace
{
get
{
return vSpace;
}
set
{
vSpace=value;
}
}
public ImageList ImageList
{
get
{
return imageList;
}
set
{
imageList=value;
}
}
private int selectedIndex=0;
public int SelectedIndex
{
get
{
return selectedIndex;
}
set
{
if(selectedIndex==value)return;
if(value>=0&&value<imageList.Images.Count)
{
((ImageItem)this.Controls[value]).SelectMe();
}
else
{
if(selectedImageItem!=null)selectedImageItem.BackColor=BaseBackColor;
}
selectedIndex=value;
}
}
private void item_MouseDown(object sender, MouseEventArgs e)
{
if(ItemSelected!=null)ItemSelected(sender,e);
}
private static Color selectedColor=Color.Blue;
private static ImageItem selectedImageItem;
private static Color BaseBackColor;
public class ImageItem:Panel
{
private PictureBox picBox=new PictureBox();
private const int AreaOffset=2;
private int index=0;
public ImageItem():this(null)
{
}
public ImageItem(Image image):this(0,image)
{
}
public ImageItem(int index,Image image):base()
{
this.DockPadding.All=AreaOffset;
this.BorderStyle=BorderStyle.None;
picBox.Dock=DockStyle.Fill;
picBox.BorderStyle=BorderStyle.None;
picBox.SizeMode=PictureBoxSizeMode.AutoSize;
this.Controls.Add(picBox);
BaseBackColor=this.BackColor;
picBox.SizeChanged+=new EventHandler(picBox_SizeChanged);
picBox.MouseDown+=new MouseEventHandler(picBox_MouseDown);
this.index=index;
this.Image=image;
}
public int Index
{
get
{
return index;
}
}
public Image Image
{
get
{
return picBox.Image;
}
set
{
picBox.Image=value;
}
}
private void picBox_SizeChanged(object sender, EventArgs e)
{
this.Width=picBox.Width+2*AreaOffset;
this.Height=picBox.Height+2*AreaOffset;
}
public void SelectMe()
{
if(selectedImageItem!=null)
{
selectedImageItem.BackColor=BaseBackColor;
}
this.BackColor=selectedColor;
selectedImageItem=this;
}
private void picBox_MouseDown(object sender, MouseEventArgs e)
{
if(e.Button==MouseButtons.Left)
{
SelectMe();
base.OnMouseDown(e);
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -