本控件的新版本在这里查看:
http://blog.csdn.net/aimeast/archive/2008/07/21/2687029.aspx
这个命名空间的功能是提供不规则外形控件的支持。它可以像普通的控件一样的进行操作,使用非常简单。
目前该版本只提供了Form和Botton的支持。目前来看,常用的外形不规则的控件就是这两种。而Form还添加了拖动的支持。
具体的实现请参阅附件里的例子。
单击 这里下载此文件。
单击 这里下载使用样例。
这个命名空间的功能是提供不规则外形控件的支持。它可以像普通的控件一样的进行操作,使用非常简单。
目前该版本只提供了Form和Botton的支持。目前来看,常用的外形不规则的控件就是这两种。而Form还添加了拖动的支持。
具体的实现请参阅附件里的例子。
/***********************************************************************/
//
// 名称: AbnormityFrame V0.1
// 功能: 进行外形不规则控件的支持(目前只支持From和Button)
// 作者: 李向东
// Email: lixd3389@gmail.com
// 未经允许,严禁用于商业用途
//
/***********************************************************************/
using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace AbnormityFrame
{
//AbnormityControl类摘自
//http://www.codeproject.com/KB/graphics/bmprgnform.aspx?target=region
internal static class AbnormityControl
{
public static GraphicsPath CalculateControlGraphicsPath(Image image)
{
GraphicsPath graphicsPath = new GraphicsPath();
Bitmap bitmap = (Bitmap)image;
Color colorTransparent = bitmap.GetPixel(0, 0);
int colOpaquePixel = 0;
for (int row = 0; row < bitmap.Height; row++)
{
colOpaquePixel = 0;
for (int col = 0; col < bitmap.Width; col++)
{
if (bitmap.GetPixel(col, row) != colorTransparent)
{
colOpaquePixel = col;
int colNext = col;
for (colNext = colOpaquePixel; colNext < bitmap.Width; colNext++)
if (bitmap.GetPixel(colNext, row) == colorTransparent)
break;
graphicsPath.AddRectangle(new Rectangle(colOpaquePixel, row, colNext - colOpaquePixel, 1));
col = colNext;
}
}
}
return graphicsPath;
}
}
public class AbnormityForm : Form
{
public override Image BackgroundImage
{
get
{
return base.BackgroundImage;
}
set
{
this.FormBorderStyle = FormBorderStyle.None;
this.Width = value.Width;
this.Height = value.Height;
base.BackgroundImage = value;
this.Region = new Region(AbnormityControl.CalculateControlGraphicsPath(value));
}
}
支持窗体拖动的代码
}
public class AbnormityButton : Button
{
public override Image BackgroundImage
{
get
{
return base.BackgroundImage;
}
set
{
this.Width = value.Width;
this.Height = value.Height;
base.BackgroundImage = value;
this.Region = new Region(AbnormityControl.CalculateControlGraphicsPath(value));
}
}
}
}
//
// 名称: AbnormityFrame V0.1
// 功能: 进行外形不规则控件的支持(目前只支持From和Button)
// 作者: 李向东
// Email: lixd3389@gmail.com
// 未经允许,严禁用于商业用途
//
/***********************************************************************/
using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace AbnormityFrame
{
//AbnormityControl类摘自
//http://www.codeproject.com/KB/graphics/bmprgnform.aspx?target=region
internal static class AbnormityControl
{
public static GraphicsPath CalculateControlGraphicsPath(Image image)
{
GraphicsPath graphicsPath = new GraphicsPath();
Bitmap bitmap = (Bitmap)image;
Color colorTransparent = bitmap.GetPixel(0, 0);
int colOpaquePixel = 0;
for (int row = 0; row < bitmap.Height; row++)
{
colOpaquePixel = 0;
for (int col = 0; col < bitmap.Width; col++)
{
if (bitmap.GetPixel(col, row) != colorTransparent)
{
colOpaquePixel = col;
int colNext = col;
for (colNext = colOpaquePixel; colNext < bitmap.Width; colNext++)
if (bitmap.GetPixel(colNext, row) == colorTransparent)
break;
graphicsPath.AddRectangle(new Rectangle(colOpaquePixel, row, colNext - colOpaquePixel, 1));
col = colNext;
}
}
}
return graphicsPath;
}
}
public class AbnormityForm : Form
{
public override Image BackgroundImage
{
get
{
return base.BackgroundImage;
}
set
{
this.FormBorderStyle = FormBorderStyle.None;
this.Width = value.Width;
this.Height = value.Height;
base.BackgroundImage = value;
this.Region = new Region(AbnormityControl.CalculateControlGraphicsPath(value));
}
}
支持窗体拖动的代码
}
public class AbnormityButton : Button
{
public override Image BackgroundImage
{
get
{
return base.BackgroundImage;
}
set
{
this.Width = value.Width;
this.Height = value.Height;
base.BackgroundImage = value;
this.Region = new Region(AbnormityControl.CalculateControlGraphicsPath(value));
}
}
}
}
单击 这里下载此文件。
单击 这里下载使用样例。