国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#自定義簽名章實現方法

2019-10-29 21:39:06
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了C#自定義簽名章實現方法,涉及C#圖形繪制的相關實現技巧,非常具有實用價值,需要的朋友可以參考下

本文實例講述了C#自定義簽名章實現方法。分享給大家供大家參考。具體實現方法如下:

 

 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. using System.Drawing; 
  6. using System.Drawing.Imaging; 
  7. using System.Drawing.Drawing2D; 
  8. namespace WfpApp 
  9. public class DrawCachet 
  10. /// <summary> 
  11. /// 自定義橢圓形簽名章 
  12. /// </summary> 
  13. /// <param name="Width">寬度,畫出的簽名章只有這寬度的一半</param> 
  14. /// <param name="Height">高度,畫出的簽名章只有這高度的一半</param> 
  15. /// <param name="test">簽名章上名字</param> 
  16. /// <param name="IsRotate">簽名章是否旋轉角度</param> 
  17. /// <param name="angle">旋轉角度的大小</param> 
  18. /// <returns></returns> 
  19. public static Bitmap GetDrawCircleCachet(int Width, int Height, string test, bool IsRotate, int angle) 
  20. //記錄圓畫筆的粗細  
  21. int Circle_Brush = 2; 
  22. //畫布 
  23. Bitmap bitmap = new Bitmap(Width, Height); 
  24. //定義字符串的樣式  
  25. Font var_Font = new Font("Arial", 13, FontStyle.Bold); 
  26. //定義一個矩形 ,設置圓的繪制區  
  27. Rectangle rect = new Rectangle(10, 10, Width / 2, Height / 2); 
  28. //實例化Graphic類  
  29. Graphics g = System.Drawing.Graphics.FromImage(bitmap); 
  30. //消除繪制圖形的鋸齒,平滑 
  31. g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; 
  32. //以白色清空panelCachet畫布背景  
  33. g.Clear(Color.White); 
  34. //設置畫筆的顏色 
  35. Pen mypen = new Pen(Color.Red, Circle_Brush); 
  36. //繪制圓  
  37. g.DrawEllipse(mypen, rect); 
  38. //設置文字的字體樣式  
  39. Font star_Font = new Font("Arial", 12, FontStyle.Regular); 
  40. //對字符串進行寬度和長度測量  
  41. SizeF var_Size = g.MeasureString(test, star_Font); 
  42. float CircleZjW = rect.Width + 2 * Circle_Brush; 
  43. float CircleZJH = rect.Height + 2 * Circle_Brush; 
  44. float x = (CircleZjW - var_Size.Width) / 2F + rect.X; 
  45. float y = (CircleZJH - var_Size.Height) / 2F + rect.Y; 
  46. //在指定的位置繪制文字 
  47. g.DrawString(test, star_Font, mypen.Brush, new PointF(x, y)); 
  48. if (IsRotate) 
  49. bitmap = Rotate(bitmap, angle); 
  50. return bitmap; 
  51. /// <summary> 
  52. /// 自定義矩形簽名章 
  53. /// </summary> 
  54. /// <param name="width">寬度,畫出的簽名章只有這寬度的一半</param> 
  55. /// <param name="height">高度,畫出的簽名章只有這高度的一半</param> 
  56. /// <param name="name">簽名章上名字</param> 
  57. /// <param name="IsRotate">簽名章是否旋轉角度</param> 
  58. /// <param name="angle">旋轉角度的大小</param> 
  59. /// <returns></returns> 
  60. public static Bitmap GetDrawRectangle(int width, int height, string name, bool IsRotate, int angle) 
  61. //記錄圓畫筆的粗細  
  62. int Circle_Brush = 2; 
  63. //畫布 
  64. Bitmap bitmap = new Bitmap(width, height); 
  65. //定義字符串的樣式  
  66. Font var_Font = new Font("Arial", 13, FontStyle.Bold); 
  67. //定義一個矩形 ,設置圓的繪制區  
  68. Rectangle rect = new Rectangle(10, 10, width / 2, height / 2); 
  69. //實例化Graphic類  
  70. Graphics g = System.Drawing.Graphics.FromImage(bitmap); 
  71. //消除繪制圖形的鋸齒,平滑 
  72. g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; 
  73. //以白色清空panelCachet畫布背景  
  74. g.Clear(Color.White); 
  75. //設置畫筆的顏色 
  76. Pen mypen = new Pen(Color.Red, Circle_Brush); 
  77. //繪制圓  
  78. g.DrawRectangle(mypen, rect); 
  79. //設置文字的字體樣式  
  80. Font star_Font = new Font("Arial", 12, FontStyle.Regular); 
  81. //對字符串進行寬度和長度測量  
  82. SizeF var_Size = g.MeasureString(name, star_Font); 
  83. float CircleZjW = rect.Width + 2 * Circle_Brush; 
  84. float CircleZJH = rect.Height + 2 * Circle_Brush; 
  85. float x = (CircleZjW - var_Size.Width) / 2F + rect.X; 
  86. float y = (CircleZJH - var_Size.Height) / 2F + rect.Y; 
  87. //在指定的位置繪制文字 
  88. g.DrawString(name, star_Font, mypen.Brush, new PointF(x, y)); 
  89. if (IsRotate) 
  90. bitmap = Rotate(bitmap, angle); 
  91. return bitmap; 
  92. /// <summary> 
  93. /// 簽名章旋轉 
  94. /// </summary> 
  95. /// <param name="b">Bitmap圖章</param> 
  96. /// <param name="angle">旋轉度</param> 
  97. /// <returns></returns> 
  98. static Bitmap Rotate(Bitmap b, int angle) 
  99. angle = angle % 360; 
  100. //弧度轉換 
  101. double radian = angle * Math.PI / 180.0; 
  102. double cos = Math.Cos(radian); 
  103. double sin = Math.Sin(radian); 
  104. //原圖的寬和高 
  105. int w = b.Width; 
  106. int h = b.Height; 
  107. int W = (int)(Math.Max(Math.Abs(w * cos - h * sin), Math.Abs(w * cos + h * sin))); 
  108. int H = (int)(Math.Max(Math.Abs(w * sin - h * cos), Math.Abs(w * sin + h * cos))); 
  109. //目標位圖 
  110. Bitmap dsImage = new Bitmap(W, H); 
  111. System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(dsImage); 
  112. g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear; 
  113. g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 
  114. //計算偏移量 
  115. Point Offset = new Point((W - w) / 2, (H - h) / 2); 
  116. //構造圖像顯示區域:讓圖像的中心與窗口的中心點一致 
  117. Rectangle rect = new Rectangle(Offset.X, Offset.Y, w, h); 
  118. Point center = new Point(rect.X + rect.Width / 2, rect.Y + rect.Height / 2); 
  119. g.TranslateTransform(center.X, center.Y); 
  120. g.RotateTransform(360 - angle); 
  121. //恢復圖像在水平和垂直方向的平移 
  122. g.TranslateTransform(-center.X, -center.Y); 
  123. g.DrawImage(b, rect); 
  124. //重至繪圖的所有變換 
  125. g.ResetTransform(); 
  126. g.Save(); 
  127. g.Dispose(); 
  128. //dsImage.Save("yuancd.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); 
  129. return dsImage; 

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 从江县| 犍为县| 潼关县| 屏东市| 灌南县| 南投县| 耿马| 安吉县| 辽源市| 六枝特区| 恩平市| 周口市| 邳州市| 绥化市| 赣榆县| 芒康县| 嘉鱼县| 东光县| 伊宁县| 水城县| 营山县| 商河县| 汉阴县| 鹿泉市| 马龙县| 黄龙县| 历史| 内丘县| 龙陵县| 田阳县| 台南县| 武定县| 东莞市| 崇左市| 建水县| 柳河县| 泰和县| 贺兰县| 洛扎县| 奎屯市| 行唐县|