c# 窗口设计中 项目:简易图片浏览器 如何旋转picturebox中的图片,求大神提供具体代码和
引用例子: //任意角度旋转 private void RotateTransformButton_Click(object sender, EventArgs e) { try { Bitmap a = new Bitmap(pictureBox1。
Image);//得到图片框中的图片 pictureBox1。Image = Rotate(a, Convert。ToInt32(textBox1。Text)); pictureBox1。
SizeMode = PictureBoxSizeMode。AutoSize; pictureBox1。Location = panel1。Location; pictureBox1。
Refresh();//最后刷新图片框 } catch { } } #region 图片旋转函数 /// <summary> /// 以逆时针为方向对图像进行旋转 /// </summary> /// <param name="b">位图流</param> /// <param name="angle">旋转角度[0,360](前台给的)</param> /// <returns></returns> public Bitmap Rotate(Bitmap b, int angle) { angle = angle % 360; //弧度转换 double radian = angle * Math。
PI / 180。0; double cos = Math。Cos(radian); double sin = Math。Sin(radian); //原图的宽和高 int w = b。
Width; int h = b。Height; int W = (int)(Math。Max(Math。Abs(w * cos - h * sin), Math。Abs(w * cos + h * sin))); int H = (int)(Math。
Max(Math。Abs(w * sin - h * cos), Math。Abs(w * sin + h * cos))); //目标位图 Bitmap dsImage = new Bitmap(W, H); Graphics g = Graphics。
FromImage(dsImage); g。InterpolationMode = InterpolationMode。Bilinear; g。SmoothingMode = SmoothingMode。
HighQuality; //计算偏移量 Point Offset = new Point((W - w) / 2, (H - h) / 2); //构造图像显示区域:让图像的中心与窗口的中心点一致 Rectangle rect = new Rectangle(Offset。
X, Offset。Y, w, h); Point center = new Point(rect。X + rect。Width / 2, rect。Y + rect。Height / 2); g。
TranslateTransform(center。X, center。Y); g。RotateTransform(360 - angle); //恢复图像在水平和垂直方向的平移 g。
TranslateTransform(-center。X, -center。Y); g。DrawImage(b, rect); //重至绘图的所有变换 g。ResetTransform(); g。
Save(); g。Dispose(); return dsImage; } #endregion 图片旋转函数 本回答由提问者推荐。