c#如何让图片根据输入的角度值自动旋转

C#绘制向量图,根据textBox1=旋转角度(0-360度),自动旋转pictureBox1中的箭头图片,图片中心点为箭头起点。每次改变textBox1的值,箭头图片都能按照初始位置按照输入值进行旋转,多次旋转后图片不会模糊。

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/1058179
  • 除此之外, 这篇博客: 谁有用C#多线程多串口的程序详细范例呀?给我发一个,我发他200币以上,具体要求就是打开两个以上串口,能同时实时接收串口的信息,并显示在textbox上就好中的 创建一个表格 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    一个简单的表格是这么创建的:

    项目Value
    电脑$1600
    手机$12
    导管$1
  • 以下回答来自chatgpt:

    针对该问题,可以通过以下步骤来实现:

    1.在C#项目中添加一个pictureBox控件,用于显示旋转后的箭头图片。

    2.导入箭头图片,并在初始化pictureBox时将该图片加载到pictureBox中。设置pictureBox的SizeMode为Zoom,这样图片可以按比例缩放后展示,保证不会变形。

    代码示例:

    pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
    pictureBox1.Image = Image.FromFile("箭头图片路径");
    

    3.通过鼠标事件获取用户的输入,并在用户输入角度值后,使用GDI+绘图库绘制旋转后的图片,并实时显示在pictureBox上。

    代码示例:

    // 定义pictureBox中心点为旋转中心点的坐标
    int x = pictureBox1.Width / 2;
    int y = pictureBox1.Height / 2;
    
    // 将角度值转为弧度值
    double radian = Math.PI * angle / 180;
    
    // 创建一个Graphics对象
    Graphics g = pictureBox1.CreateGraphics();
    Bitmap bmp = new Bitmap(pictureBox1.Image);
    
    // 创建Matrix对象并设置旋转角度和中心点坐标
    Matrix matrix = new Matrix();
    matrix.Translate(-x, -y);
    matrix.Rotate((float)angle, MatrixOrder.Append);
    matrix.Translate(x, y, MatrixOrder.Append);
    
    // 使用Matrix对象绘制旋转后的图片
    g.Transform = matrix;
    g.DrawImage(bmp, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height), 0, 0, pictureBox1.Image.Width, pictureBox1.Image.Height, GraphicsUnit.Pixel);
    
    // 释放资源
    bmp.Dispose();
    g.Dispose();
    

    4.为防止多次旋转后图片模糊,可以在每次旋转后将pictureBox中原有的图片清空,再进行下一次绘制。

    代码示例:

    pictureBox1.Image = null;
    pictureBox1.Invalidate();
    

    综上所述,实现该功能的大致思路为获取用户输入,通过GDI+库绘制旋转后的图片,并实时在pictureBox中显示。在每次旋转后清空pictureBox中的原有图片,就可以避免多次旋转后图片模糊。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^