国产探花免费观看_亚洲丰满少妇自慰呻吟_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的塞到目標區域里。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凤城市| 汉源县| 永寿县| 贵州省| 广河县| 公主岭市| 河曲县| 潼关县| 绥棱县| 湘潭县| 巫溪县| 古浪县| 香港 | 奎屯市| 宁强县| 林甸县| 黄冈市| 梁平县| 湛江市| 浙江省| 昌黎县| 通辽市| 保亭| 稻城县| 神池县| 揭东县| 武川县| 台前县| 专栏| 柏乡县| 远安县| 涟源市| 辽源市| 东乌珠穆沁旗| 高唐县| 株洲市| 长白| 墨竹工卡县| 岐山县| 万盛区| 白沙|