欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#自動生成漂亮的水晶效果頭像的實現(xiàn)代碼

 更新時間:2013年12月10日 16:14:32   作者:  
這篇文章主要介紹了C#自動生成漂亮的水晶效果頭像的實現(xiàn)代碼,有需要的朋友可以參考一下

與其他的微博系統(tǒng)相同,在“多可內(nèi)網(wǎng)微博系統(tǒng)”的用戶也可上傳自己的頭像,并支持頭像裁剪。

但“多可內(nèi)網(wǎng)微博系統(tǒng)”的頭像可以更漂亮,因為系統(tǒng)實現(xiàn)了水晶效果的頭像。
C#程序?qū)崿F(xiàn)水晶效果頭像的過程是:

(1)圖像縮略到寬度或高度=90的頭像;

(2)由用戶選擇合適的位置裁剪90x90的最終頭像;

(3)添加水晶效果;

代碼奉獻(xiàn):

復(fù)制代碼 代碼如下:

/// <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;

// 創(chuàng)建按鈕圖形-刷子
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);

// 創(chuàng)建按鈕陰影-刷子
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

// 為了更逼真,我們將漸變結(jié)束顏色設(shè)定為窗體前景色,可以根據(jù)窗口的前景顏色適當(dāng)調(diào)整
// 創(chuàng)建按鈕頂部白色漸變-刷子
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
{
//將此 原圖片 以指定格式并用指定的編解碼參數(shù)保存到指定文件
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());

}

相關(guān)文章

  • C# 位運(yùn)算符整理

    C# 位運(yùn)算符整理

    在C#中可以對整型運(yùn)算對象按位進(jìn)行邏輯運(yùn)算。按位進(jìn)行邏輯運(yùn)算的意義是:依次取被運(yùn)算對象的每個位,進(jìn)行邏輯運(yùn)算,每個位的邏輯運(yùn)算結(jié)果是結(jié)果值的每個位。
    2008-10-10
  • C#簡單郵件群發(fā)通用類

    C#簡單郵件群發(fā)通用類

    這篇文章主要為大家分享了簡單的C#郵件群發(fā)通用類,代碼簡單實用,感興趣的小伙伴們可以參考一下
    2016-03-03
  • C#實現(xiàn)十五子游戲

    C#實現(xiàn)十五子游戲

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)十五子游戲的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • c#語言入門類型和成員

    c#語言入門類型和成員

    這篇文章主要介紹了c#語言入門類型和成員,類 是最基本的 C# 類型。 類是一種數(shù)據(jù)結(jié)構(gòu),可在一個單元中就將狀態(tài)和操作結(jié)合起來。 類為類實例提供了定義。類支持繼承和多形性,即派生類 以擴(kuò)展和專門針對基類的機(jī)制,下面來看看文章的詳細(xì)介紹
    2021-12-12
  • 對C#中public、private、protect的區(qū)別說明

    對C#中public、private、protect的區(qū)別說明

    這篇文章主要介紹了對C#中public、private、protect的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C#基礎(chǔ)知識之字符串和正則表達(dá)式

    C#基礎(chǔ)知識之字符串和正則表達(dá)式

    目前為止許多編程語言和工具都包含對正則表達(dá)式的支持,C#也不例外,下面這篇文章主要給大家介紹了關(guān)于C#基礎(chǔ)知識之字符串和正則表達(dá)式的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • C# WebApi Get請求方式傳遞實體參數(shù)的方法示例

    C# WebApi Get請求方式傳遞實體參數(shù)的方法示例

    這篇文章主要給大家介紹了關(guān)于C# WebApi Get請求方式傳遞實體參數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 詳解C#讀取Appconfig中自定義的節(jié)點

    詳解C#讀取Appconfig中自定義的節(jié)點

    我們往往需要在App.config中自定義一些節(jié)來滿足實際需要,而不依賴于App.config的appSettings,下面通過一個簡單的實例來說明自定義配置節(jié)點的設(shè)置與讀取
    2015-06-06
  • C# 通過 inline-asm 解決嵌入x86匯編

    C# 通過 inline-asm 解決嵌入x86匯編

    此篇文章通過C#語言解決嵌入x86匯編,主要通過INline-asm方法來實現(xiàn),下面我通過圖片和代碼的形式給大家分享下,需要的朋友可以參考下
    2015-07-07
  • c#判斷輸入的是不是數(shù)字的小例子

    c#判斷輸入的是不是數(shù)字的小例子

    c#判斷輸入的是不是數(shù)字的小例子,需要的朋友可以參考一下
    2013-03-03

最新評論