winform图片旋转

01.//可以实现任意角度的旋转,旋转出现的角落空白可以选择填充的颜色。

02.  
03.  
04. using System;
05.  
06. using System.Drawing;
07. using System.Drawing.Drawing2D;
08. using System.Drawing.Imaging;
09. using System.Text;
10. using System.Windows.Forms;
11.  
12. namespace bitmaprerote
13. {
14. public partial class Form1 : Form
15. {
16. public Form1()
17. {
18. InitializeComponent();
19. }
20. public static Bitmap KiRotate(Bitmap bmp, float angle, Color bkColor)
21. {
22. int w = bmp.Width + 2;
23. int h = bmp.Height + 2;
24.  
25. PixelFormat pf;
26.  
27. if (bkColor == Color.Transparent)
28. {
29. pf = PixelFormat.Format32bppArgb;
30. }
31. else
32. {
33. pf = bmp.PixelFormat;
34. }
35.  
36. Bitmap tmp = new Bitmap(w, h, pf);
37. Graphics g = Graphics.FromImage(tmp);
38. g.Clear(bkColor);
39. g.DrawImageUnscaled(bmp, 1, 1);
40. g.Dispose();
41.  
42. GraphicsPath path = new GraphicsPath();
43. path.AddRectangle(new RectangleF(0f, 0f, w, h));
44. Matrix mtrx = new Matrix();
45. mtrx.Rotate(angle);
46. RectangleF rct = path.GetBounds(mtrx);
47.  
48. Bitmap dst = new Bitmap((int)rct.Width, (int)rct.Height, pf);
49. g = Graphics.FromImage(dst);
50. g.Clear(bkColor);
51. g.TranslateTransform(-rct.X, -rct.Y);
52. g.RotateTransform(angle);
53. g.InterpolationMode = InterpolationMode.HighQualityBilinear;
54. g.DrawImageUnscaled(tmp, 0, 0);
55. g.Dispose();
56. tmp.Dispose();
57. return dst;
58. }
59. private void button2_Click(object sender, EventArgs e)
60. {
61. Bitmap map = new Bitmap("F:\\hj.jpg");
62. this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
63. map = KiRotate(map, 30, Color.Pink);
64. pictureBox1.Image = map;
65. }
66. }
67. }

转载于:https://www.cnblogs.com/jliuwork/p/4084166.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值