C# 绘制图片平铺,拉伸,居中等

自从用C#,发现自己变的越来越懒,C#各个功能实现都可以在网上找到类似代码。

我就乐的坐享其成,把代码改改就OK了。

代码出自:http://www.dylike-soft.com/blogview.asp?id=109

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
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);
}
}

 

转载于:https://www.cnblogs.com/mantian/archive/2010/09/17/1829242.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值