萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> C#自動生成漂亮的水晶效果頭像的實現代碼

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());   }    
copyright © 萬盛學電腦網 all rights reserved