经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
C#根据屏幕分辨率改变图片尺寸
来源:cnblogs  作者:38度6  时间:2018/11/1 9:43:26  对本文有异议

最近工作中遇到一个问题,就是需要将程序文件夹中的图片根据此时电脑屏幕的分辨率来重新改变图片尺寸

以下为代码实现过程:

1、获取文件夹中的图片,此文件夹名为exe程序同目录下

  1. //读取文件夹中文件
  2. DirectoryInfo dir = new DirectoryInfo(@"文件夹名");
  3. FileInfo[] fileInfo = dir.GetFiles();
  4. List<string> fileNames = new List<string>();
  5. foreach (FileInfo item in fileInfo)
  6. {
  7. fileNames.Add(item.Name);
  8. }

2、获取电脑屏幕分辩率

  1. //获取全屏下屏幕分辩率
  2. Rectangle rect = new Rectangle();
  3. //全屏
  4. rect.Width = (int)System.Windows.SystemParameters.PrimaryScreenWidth;
  5. rect.Height = (int)System.Windows.SystemParameters.PrimaryScreenHeight;
  6. //rect = Screen.GetWorkingArea(this);//工作区域下的分辩率,不包括任务栏
  7. //rect.Width;//屏幕宽
  8. //rect.Height;//屏幕高

3、改变图片尺寸,并保存

  1. /// <summary>
  2. /// 生成缩略图
  3. /// </summary>
  4. /// <param name="serverImagePath">图片地址</param>
  5. /// <param name="thumbnailImagePath">缩略图地址</param>
  6. /// <param name="width">图片宽度</param>
  7. /// <param name="height">图片高度</param>
  8. /// <param name="p"></param>
  9. public static void GetThumbnail(string serverImagePath, string thumbnailImagePath, int width, int height)
  10. {
  11. System.Drawing.Image serverImage = System.Drawing.Image.FromFile(serverImagePath);
  12. //画板大小
  13. int towidth = width;
  14. int toheight = height;
  15. //缩略图矩形框的像素点
  16. int ow = serverImage.Width;
  17. int oh = serverImage.Height;
  18. if (ow > oh)
  19. {
  20. toheight = serverImage.Height * width / serverImage.Width;
  21. }
  22. else
  23. {
  24. towidth = serverImage.Width * height / serverImage.Height;
  25. }
  26. //新建一个bmp图片
  27. System.Drawing.Image bm = new System.Drawing.Bitmap(width, height);
  28. //新建一个画板
  29. System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bm);
  30. //设置高质量插值法
  31. g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
  32. //设置高质量,低速度呈现平滑程度
  33. g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
  34. //清空画布并以透明背景色填充
  35. g.Clear(System.Drawing.Color.White);
  36. //在指定位置并且按指定大小绘制原图片的指定部分
  37. g.DrawImage(serverImage, new System.Drawing.Rectangle((width - towidth) / 2, (height - toheight) / 2, towidth, toheight),
  38. 0, 0, ow, oh,
  39. System.Drawing.GraphicsUnit.Pixel);
  40. try
  41. {
  42. //以jpg格式保存缩略图
  43. bm.Save(thumbnailImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
  44. }
  45. catch (System.Exception e)
  46. {
  47. throw e;
  48. }
  49. finally
  50. {
  51. serverImage.Dispose();
  52. bm.Dispose();
  53. g.Dispose();
  54. }
  55. }

自此整个功能就实现了。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号