展会信息港展会大全

C#自动生成漂亮的水晶效果头像的实现代码
来源:互联网   发布日期:2016-01-19 12:57:19   浏览:1378次  

导读:这篇文章主要介绍了C 自动生成漂亮的水晶效果头像的实现代码,有需要的朋友可以参考一下与其他的微博系统相同,在多可内网微博系统的用户也可上传自己的头像,并支持头像裁剪。但多可内网微博系统的头像可以更漂 ...

这篇文章主要介绍了C#自动生成漂亮的水晶效果头像的实现代码,有需要的朋友可以参考一下

与其他的微博系统相同,在 多可内网微博系统 的用户也可上传自己的头像,并支持头像裁剪。

但 多可内网微博系统 的头像可以更漂亮,因为系统实现了水晶效果的头像。

C#程序实现水晶效果头像的过程是:

(1)图像缩略到宽度或高度=90的头像;

(2)由用户选择合适的位置裁剪90x90的最终头像;

(3)添加水晶效果;

代码奉献:

代码如下:

/// <summary>

/// 绘制水晶效果的头像

/// </summary>

/// <param name="containsPage"></param>

/// <param name="w"></param>

/// <param name="h"></param>

/// <param name="MemoString"></param>

public static void Avatar(Page containsPage, string filename, int r, int m, int s, int x, int y, bool save, string new_avatar)

{

System.Drawing.Image imageSrc = System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath("/") + filename);

int w = imageSrc.Width;

int h = imageSrc.Height;

if (r == 1 || r == 3)

{

h = imageSrc.Width;

w = imageSrc.Height;

}

if (save)

{

w = h = 90;

}

if (w > 300) w = 300;

if (h > 300) h = 300;

Color backColor = Color.DarkTurquoise;

Size size = new Size(w, h);

System.Drawing.Bitmap btnbmp = new Bitmap(w, h);

Graphics g = Graphics.FromImage(btnbmp);

//重置背景颜色,可以自定义

g.Clear(Color.White);

Color clr = backColor;

g.SmoothingMode = SmoothingMode.AntiAlias;//消除锯齿

g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;

// 创建按钮图形-刷子

int btnOff = 0;//按钮边距

Rectangle rc1 = new Rectangle(btnOff, btnOff, size.Width - 1 - btnOff, size.Height - 1 - btnOff);

GraphicsPath gpath1 = GetGraphicsPath(rc1, 10);

GraphicsPath gpath1a = GetGraphicsPath(rc1, 15);

LinearGradientBrush br1 = new LinearGradientBrush(new Point(0, 0), new Point(0, rc1.Height + 6), clr, Color.White);

// 创建按钮阴影-刷子

int shadowOff = 1;//阴影边距

Rectangle rc2 = rc1;

rc2.Offset(0, shadowOff);

GraphicsPath gpath2 = GetGraphicsPath(rc2, 10);

PathGradientBrush br2 = new PathGradientBrush(gpath2);

br2.CenterColor = Color.FromArgb(0, 0, 0); // Color.Black;

br2.SurroundColors = new Color[] { Color.FromArgb(64, 64, 64, 64), Color.FromArgb(64, 128, 128, 128) }; // SystemColors.ButtonFace

// 为了更逼真,我们将渐变结束颜色设定为窗体前景色,可以根据窗口的前景颜色适当调整

// 创建按钮顶部白色渐变-刷子

Rectangle rc3 = rc1;

rc3.Inflate(-1, -1);

rc3.Height = 15;

GraphicsPath gpath3 = GetGraphicsPath(rc3, 10);

LinearGradientBrush br3 = new LinearGradientBrush(rc3, Color.FromArgb(255, Color.White), Color.FromArgb(0, Color.White), LinearGradientMode.Vertical);

//绘制图形

//绘制阴影

if (s > 0)

{

g.FillPath(br2, gpath2);

}

//绘制按钮

if (s > 0)

{

g.FillPath(br1, gpath1);

}

//if (s > 0)

//{

g.SetClip(gpath1a, CombineMode.Replace);

//}

switch (m)

{

case 1:

_currentBitmap = (Bitmap)imageSrc;

RotateFlip(RotateFlipType.RotateNoneFlipX);

imageSrc = (System.Drawing.Image)_currentBitmap;

break;

case 2:

_currentBitmap = (Bitmap)imageSrc;

RotateFlip(RotateFlipType.RotateNoneFlipY);

imageSrc = (System.Drawing.Image)_currentBitmap;

break;

default:

break;

}

switch (r)

{

case 1:

_currentBitmap = (Bitmap)imageSrc;

RotateFlip(RotateFlipType.Rotate90FlipNone);

imageSrc = (System.Drawing.Image)_currentBitmap;

break;

case 2:

_currentBitmap = (Bitmap)imageSrc;

RotateFlip(RotateFlipType.Rotate180FlipNone);

imageSrc = (System.Drawing.Image)_currentBitmap;

break;

case 3:

_currentBitmap = (Bitmap)imageSrc;

RotateFlip(RotateFlipType.Rotate270FlipNone);

imageSrc = (System.Drawing.Image)_currentBitmap;

break;

default:

break;

}

g.DrawImage(imageSrc, -x, -y);

//绘制顶部白色泡泡

if (s > 0)

{

g.FillPath(br3, gpath3);

}

imageSrc.Dispose();

g.Dispose();

MemoryStream stream = new MemoryStream();

btnbmp.Save(stream, System.Drawing.Imaging.ImageFormat.Png);

if (save)

{

try

{

//将此 原图片 以指定格式并用指定的编解码参数保存到指定文件

string sFile = HttpContext.Current.Server.MapPath("/") + new_avatar;

btnbmp.Save(sFile);

}

catch (System.Exception e)

{

throw e;

}

}

//输出图片containsPage

containsPage.Response.Expires = 0;

containsPage.Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);

containsPage.Response.AddHeader("pragma", "no-cache");

containsPage.Response.AddHeader("cache-control", "private");

containsPage.Response.CacheControl = "no-cache";

containsPage.Response.Clear();

containsPage.Response.ContentType = "image/png";

containsPage.Response.BinaryWrite(stream.ToArray());

}

赞助本站

人工智能实验室

相关热词: 水晶效果 自动生成 C

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港