自从用C#,发现自己变的越来越懒,C#各个功能实现都可以在网上找到类似代码。
我就乐的坐享其成,把代码改改就OK了。
代码出自:http://www.dylike-soft.com/blogview.asp?id=109
代码
C# 源码
/// <summary>
/// 填充模式
/// </summary>
/// <remarks></remarks>
public enum FillMode
{
/// <summary>
/// 平铺
/// </summary>
/// <remarks></remarks>
Title = 0 ,
/// <summary>
/// 居中
/// </summary>
/// <remarks></remarks>
Center = 1 ,
/// <summary>
/// 拉伸
/// </summary>
/// <remarks></remarks>
Struk = 2 ,
/// <summary>
/// 缩放
/// </summary>
/// <remarks></remarks>
Zoom = 3
}
/// <summary>
/// 将指向图像按指定的填充模式绘制到目标图像上
/// </summary>
/// <param name="SourceBmp"> 要控制填充模式的源图 </param>
/// <param name="TargetBmp"> 要绘制到的目标图 </param>
/// <param name="_FillMode"> 填充模式 </param>
/// <remarks></remarks>
public void Image_FillRect(Bitmap SourceBmp, Bitmap TargetBmp, FillMode _FillMode)
{
try {
switch (_FillMode) {
case FillMode.Title:
using (TextureBrush Txbrus = new TextureBrush(SourceBmp)) {
Txbrus.WrapMode = Drawing2D.WrapMode.Tile;
using (Graphics G = Graphics.FromImage(TargetBmp)) {
G.FillRectangle(Txbrus, new Rectangle( 0 , 0 , TargetBmp.Width - 1 , TargetBmp.Height - 1 ));
}
}
break ;
case FillMode.Center:
using (Graphics G = Graphics.FromImage(TargetBmp)) {
int xx = (TargetBmp.Width - SourceBmp.Width) / 2 ;
int yy = (TargetBmp.Height - SourceBmp.Height) / 2 ;
G.DrawImage(SourceBmp, new Rectangle(xx, yy, SourceBmp.Width, SourceBmp.Height), new Rectangle( 0 , 0 , SourceBmp.Width, SourceBmp.Height), GraphicsUnit.Pixel);
}
break ;
case FillMode.Struk:
using (Graphics G = Graphics.FromImage(TargetBmp)) {
G.DrawImage(SourceBmp, new Rectangle( 0 , 0 , TargetBmp.Width, TargetBmp.Height), new Rectangle( 0 , 0 , SourceBmp.Width, SourceBmp.Height), GraphicsUnit.Pixel);
}
break ;
case FillMode.Zoom:
double tm = 0.0 ;
int W = SourceBmp.Width;
int H = SourceBmp.Height;
if (W > TargetBmp.Width) {
tm = TargetBmp.Width / SourceBmp.Width;
W = W * tm;
H = H * tm;
}
if (H > TargetBmp.Height) {
tm = TargetBmp.Height / H;
W = W * tm;
H = H * tm;
}
using (Bitmap tmpBP = new Bitmap(W, H)) {
using (Graphics G2 = Graphics.FromImage(tmpBP)) {
G2.DrawImage(SourceBmp, new Rectangle( 0 , 0 , W, H), new Rectangle( 0 , 0 , SourceBmp.Width, SourceBmp.Height), GraphicsUnit.Pixel);
using (Graphics G = Graphics.FromImage(TargetBmp)) {
int xx = (TargetBmp.Width - W) / 2 ;
int yy = (TargetBmp.Height - H) / 2 ;
G.DrawImage(tmpBP, new Rectangle(xx, yy, W, H), new Rectangle( 0 , 0 , W, H), GraphicsUnit.Pixel);
}
}
}
break ;
}
} catch (Exception ex) {
Console.WriteLine(ex.Message);
}
}
/// <summary>
/// 填充模式
/// </summary>
/// <remarks></remarks>
public enum FillMode
{
/// <summary>
/// 平铺
/// </summary>
/// <remarks></remarks>
Title = 0 ,
/// <summary>
/// 居中
/// </summary>
/// <remarks></remarks>
Center = 1 ,
/// <summary>
/// 拉伸
/// </summary>
/// <remarks></remarks>
Struk = 2 ,
/// <summary>
/// 缩放
/// </summary>
/// <remarks></remarks>
Zoom = 3
}
/// <summary>
/// 将指向图像按指定的填充模式绘制到目标图像上
/// </summary>
/// <param name="SourceBmp"> 要控制填充模式的源图 </param>
/// <param name="TargetBmp"> 要绘制到的目标图 </param>
/// <param name="_FillMode"> 填充模式 </param>
/// <remarks></remarks>
public void Image_FillRect(Bitmap SourceBmp, Bitmap TargetBmp, FillMode _FillMode)
{
try {
switch (_FillMode) {
case FillMode.Title:
using (TextureBrush Txbrus = new TextureBrush(SourceBmp)) {
Txbrus.WrapMode = Drawing2D.WrapMode.Tile;
using (Graphics G = Graphics.FromImage(TargetBmp)) {
G.FillRectangle(Txbrus, new Rectangle( 0 , 0 , TargetBmp.Width - 1 , TargetBmp.Height - 1 ));
}
}
break ;
case FillMode.Center:
using (Graphics G = Graphics.FromImage(TargetBmp)) {
int xx = (TargetBmp.Width - SourceBmp.Width) / 2 ;
int yy = (TargetBmp.Height - SourceBmp.Height) / 2 ;
G.DrawImage(SourceBmp, new Rectangle(xx, yy, SourceBmp.Width, SourceBmp.Height), new Rectangle( 0 , 0 , SourceBmp.Width, SourceBmp.Height), GraphicsUnit.Pixel);
}
break ;
case FillMode.Struk:
using (Graphics G = Graphics.FromImage(TargetBmp)) {
G.DrawImage(SourceBmp, new Rectangle( 0 , 0 , TargetBmp.Width, TargetBmp.Height), new Rectangle( 0 , 0 , SourceBmp.Width, SourceBmp.Height), GraphicsUnit.Pixel);
}
break ;
case FillMode.Zoom:
double tm = 0.0 ;
int W = SourceBmp.Width;
int H = SourceBmp.Height;
if (W > TargetBmp.Width) {
tm = TargetBmp.Width / SourceBmp.Width;
W = W * tm;
H = H * tm;
}
if (H > TargetBmp.Height) {
tm = TargetBmp.Height / H;
W = W * tm;
H = H * tm;
}
using (Bitmap tmpBP = new Bitmap(W, H)) {
using (Graphics G2 = Graphics.FromImage(tmpBP)) {
G2.DrawImage(SourceBmp, new Rectangle( 0 , 0 , W, H), new Rectangle( 0 , 0 , SourceBmp.Width, SourceBmp.Height), GraphicsUnit.Pixel);
using (Graphics G = Graphics.FromImage(TargetBmp)) {
int xx = (TargetBmp.Width - W) / 2 ;
int yy = (TargetBmp.Height - H) / 2 ;
G.DrawImage(tmpBP, new Rectangle(xx, yy, W, H), new Rectangle( 0 , 0 , W, H), GraphicsUnit.Pixel);
}
}
}
break ;
}
} catch (Exception ex) {
Console.WriteLine(ex.Message);
}
}