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

首頁 > 學院 > 開發設計 > 正文

C#縮放和裁剪圖片

2019-11-17 03:06:44
字體:
來源:轉載
供稿:網友
C#縮放和裁剪圖片

在GDI+中,縮放和剪裁可以看作同一個操作,無非就是原始區域的選擇不同罷了。空口無憑,先看具體算法可能更好理解。

C#代碼收藏代碼
  1. usingSystem;
  2. usingSystem.Collections.Generic;
  3. usingSystem.Text;
  4. usingSystem.Drawing;
  5. usingSystem.Drawing.Drawing2D;
  6. usingSystem.Drawing.Imaging;
  7. namespacePRoject
  8. {
  9. classImageOperation
  10. {
  11. ///<summary>
  12. ///Resize圖片
  13. ///</summary>
  14. ///<paramname="bmp">原始Bitmap</param>
  15. ///<paramname="newW">新的寬度</param>
  16. ///<paramname="newH">新的高度</param>
  17. ///<paramname="Mode">保留著,暫時未用</param>
  18. ///<returns>處理以后的圖片</returns>
  19. publicstaticBitmapResizeImage(Bitmapbmp,intnewW,intnewH,intMode)
  20. {
  21. try
  22. {
  23. Bitmapb=newBitmap(newW,newH);
  24. Graphicsg=Graphics.FromImage(b);
  25. //插值算法的質量
  26. g.InterpolationMode=InterpolationMode.HighQualityBicubic;
  27. g.DrawImage(bmp,newRectangle(0,0,newW,newH),newRectangle(0,0,bmp.Width,bmp.Height),GraphicsUnit.Pixel);
  28. g.Dispose();
  29. returnb;
  30. }
  31. catch
  32. {
  33. returnnull;
  34. }
  35. }
  36. ///<summary>
  37. ///剪裁--用GDI+
  38. ///</summary>
  39. ///<paramname="b">原始Bitmap</param>
  40. ///<paramname="StartX">開始坐標X</param>
  41. ///<paramname="StartY">開始坐標Y</param>
  42. ///<paramname="iWidth">寬度</param>
  43. ///<paramname="iHeight">高度</param>
  44. ///<returns>剪裁后的Bitmap</returns>
  45. publicstaticBitmapCut(Bitmapb,intStartX,intStartY,intiWidth,intiHeight)
  46. {
  47. if(b==null)
  48. {
  49. returnnull;
  50. }
  51. intw=b.Width;
  52. inth=b.Height;
  53. if(StartX>=w||StartY>=h)
  54. {
  55. returnnull;
  56. }
  57. if(StartX+iWidth>w)
  58. {
  59. iWidth=w-StartX;
  60. }
  61. if(StartY+iHeight>h)
  62. {
  63. iHeight=h-StartY;
  64. }
  65. try
  66. {
  67. BitmapbmpOut=newBitmap(iWidth,iHeight,PixelFormat.Format24bppRgb);
  68. Graphicsg=Graphics.FromImage(bmpOut);
  69. g.DrawImage(b,newRectangle(0,0,iWidth,iHeight),newRectangle(StartX,StartY,iWidth,iHeight),GraphicsUnit.Pixel);
  70. g.Dispose();
  71. returnbmpOut;
  72. }
  73. catch
  74. {
  75. returnnull;
  76. }
  77. }
  78. }
  79. }

目標其實都是new Rectangle(0, 0, iWidth, iHeight),縮放算法把整個原始圖都往目標區域里塞new Rectangle(0, 0, bmp.Width, bmp.Height),而剪裁只是把原始區域上等寬等高的那個區域new Rectangle(StartX, StartY, iWidth, iHeight)1:1的塞到目標區域里。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肥东县| 昌平区| 金阳县| 家居| 三穗县| 个旧市| 大化| 沂南县| 上杭县| 察雅县| 北安市| 许昌县| 灯塔市| 潞城市| 青岛市| 日土县| 同德县| 台东市| 南安市| 衡南县| 余干县| 五原县| 文山县| 淅川县| 万州区| 蛟河市| 新平| 武穴市| 山阴县| 三门峡市| 任丘市| 蕉岭县| 康马县| 龙南县| 鹤山市| 虎林市| 屏东县| 万荣县| 桦甸市| 无锡市| 兴义市|