C#自定义签名章实现方法
本文实例讲述了C#自定义签名章实现方法。分享给大家供大家参考。具体实现方法如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Drawing;
usingSystem.Drawing.Imaging;
usingSystem.Drawing.Drawing2D;
namespaceWfpApp
{
publicclassDrawCachet
{
///<summary>
///自定义椭圆形签名章
///</summary>
///<paramname="Width">宽度,画出的签名章只有这宽度的一半</param>
///<paramname="Height">高度,画出的签名章只有这高度的一半</param>
///<paramname="test">签名章上名字</param>
///<paramname="IsRotate">签名章是否旋转角度</param>
///<paramname="angle">旋转角度的大小</param>
///<returns></returns>
publicstaticBitmapGetDrawCircleCachet(intWidth,intHeight,stringtest,boolIsRotate,intangle)
{
//记录圆画笔的粗细
intCircle_Brush=2;
//画布
Bitmapbitmap=newBitmap(Width,Height);
//定义字符串的样式
Fontvar_Font=newFont("Arial",13,FontStyle.Bold);
//定义一个矩形,设置圆的绘制区
Rectanglerect=newRectangle(10,10,Width/2,Height/2);
//实例化Graphic类
Graphicsg=System.Drawing.Graphics.FromImage(bitmap);
//消除绘制图形的锯齿,平滑
g.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
//以白色清空panelCachet画布背景
g.Clear(Color.White);
//设置画笔的颜色
Penmypen=newPen(Color.Red,Circle_Brush);
//绘制圆
g.DrawEllipse(mypen,rect);
//设置文字的字体样式
Fontstar_Font=newFont("Arial",12,FontStyle.Regular);
//对字符串进行宽度和长度测量
SizeFvar_Size=g.MeasureString(test,star_Font);
floatCircleZjW=rect.Width+2*Circle_Brush;
floatCircleZJH=rect.Height+2*Circle_Brush;
floatx=(CircleZjW-var_Size.Width)/2F+rect.X;
floaty=(CircleZJH-var_Size.Height)/2F+rect.Y;
//在指定的位置绘制文字
g.DrawString(test,star_Font,mypen.Brush,newPointF(x,y));
if(IsRotate)
bitmap=Rotate(bitmap,angle);
returnbitmap;
}
///<summary>
///自定义矩形签名章
///</summary>
///<paramname="width">宽度,画出的签名章只有这宽度的一半</param>
///<paramname="height">高度,画出的签名章只有这高度的一半</param>
///<paramname="name">签名章上名字</param>
///<paramname="IsRotate">签名章是否旋转角度</param>
///<paramname="angle">旋转角度的大小</param>
///<returns></returns>
publicstaticBitmapGetDrawRectangle(intwidth,intheight,stringname,boolIsRotate,intangle)
{
//记录圆画笔的粗细
intCircle_Brush=2;
//画布
Bitmapbitmap=newBitmap(width,height);
//定义字符串的样式
Fontvar_Font=newFont("Arial",13,FontStyle.Bold);
//定义一个矩形,设置圆的绘制区
Rectanglerect=newRectangle(10,10,width/2,height/2);
//实例化Graphic类
Graphicsg=System.Drawing.Graphics.FromImage(bitmap);
//消除绘制图形的锯齿,平滑
g.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
//以白色清空panelCachet画布背景
g.Clear(Color.White);
//设置画笔的颜色
Penmypen=newPen(Color.Red,Circle_Brush);
//绘制圆
g.DrawRectangle(mypen,rect);
//设置文字的字体样式
Fontstar_Font=newFont("Arial",12,FontStyle.Regular);
//对字符串进行宽度和长度测量
SizeFvar_Size=g.MeasureString(name,star_Font);
floatCircleZjW=rect.Width+2*Circle_Brush;
floatCircleZJH=rect.Height+2*Circle_Brush;
floatx=(CircleZjW-var_Size.Width)/2F+rect.X;
floaty=(CircleZJH-var_Size.Height)/2F+rect.Y;
//在指定的位置绘制文字
g.DrawString(name,star_Font,mypen.Brush,newPointF(x,y));
if(IsRotate)
bitmap=Rotate(bitmap,angle);
returnbitmap;
}
///<summary>
///签名章旋转
///</summary>
///<paramname="b">Bitmap图章</param>
///<paramname="angle">旋转度</param>
///<returns></returns>
staticBitmapRotate(Bitmapb,intangle)
{
angle=angle%360;
//弧度转换
doubleradian=angle*Math.PI/180.0;
doublecos=Math.Cos(radian);
doublesin=Math.Sin(radian);
//原图的宽和高
intw=b.Width;
inth=b.Height;
intW=(int)(Math.Max(Math.Abs(w*cos-h*sin),Math.Abs(w*cos+h*sin)));
intH=(int)(Math.Max(Math.Abs(w*sin-h*cos),Math.Abs(w*sin+h*cos)));
//目标位图
BitmapdsImage=newBitmap(W,H);
System.Drawing.Graphicsg=System.Drawing.Graphics.FromImage(dsImage);
g.InterpolationMode=System.Drawing.Drawing2D.InterpolationMode.Bilinear;
g.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//计算偏移量
PointOffset=newPoint((W-w)/2,(H-h)/2);
//构造图像显示区域:让图像的中心与窗口的中心点一致
Rectanglerect=newRectangle(Offset.X,Offset.Y,w,h);
Pointcenter=newPoint(rect.X+rect.Width/2,rect.Y+rect.Height/2);
g.TranslateTransform(center.X,center.Y);
g.RotateTransform(360-angle);
//恢复图像在水平和垂直方向的平移
g.TranslateTransform(-center.X,-center.Y);
g.DrawImage(b,rect);
//重至绘图的所有变换
g.ResetTransform();
g.Save();
g.Dispose();
//dsImage.Save("yuancd.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
returndsImage;
}
}
}
希望本文所述对大家的C#程序设计有所帮助。