Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以某种程度围绕某个点旋转位图的正确方法是什么?_C#_Rotatetransform - Fatal编程技术网

C# 以某种程度围绕某个点旋转位图的正确方法是什么?

C# 以某种程度围绕某个点旋转位图的正确方法是什么?,c#,rotatetransform,C#,Rotatetransform,我想用一个图像盒来组装一个模拟时钟。我已经为picturebox设置了一个背景图像,这将是“时钟面”。在此基础上,我打算使用位图图像作为我的时间、分钟和秒针。我查阅了一些资料和文档,我的问题几乎解决了,但我在某一点上卡住了。(我正在使用Visual Studio 2013和C#表单应用程序)。我已将位图转换为图形对象,然后使用TranslateTransform类设置旋转点,然后使用RotateTransform类旋转它。我将我的原始位图绘制到图形对象,并将我的picturebox.Image设

我想用一个图像盒来组装一个模拟时钟。我已经为picturebox设置了一个背景图像,这将是“时钟面”。在此基础上,我打算使用位图图像作为我的时间、分钟和秒针。我查阅了一些资料和文档,我的问题几乎解决了,但我在某一点上卡住了。(我正在使用Visual Studio 2013和C#表单应用程序)。我已将位图转换为图形对象,然后使用TranslateTransform类设置旋转点,然后使用RotateTransform类旋转它。我将我的原始位图绘制到图形对象,并将我的picturebox.Image设置为此位图。is只显示手的某一点。当我为度设置另一个值时,它显示了它的另一个特定部分。我的代码如下所示:

 private void rotateImg(Bitmap b , int degree) {
        Bitmap bitmap = new Bitmap(b.Width,b.Height);
        Graphics g = Graphics.FromImage(bitmap);
        g.TranslateTransform(bitmap.Width/2,bitmap.Height/2);
        g.RotateTransform(degree);
        g.DrawImage(b, new Point(0,0));
        g.Dispose();
        pictureBox1.Image=bitmap;

    } 
我的结果如下:


我现在对此感到非常困惑,我对C#form应用程序不太熟悉,因此我愿意接受任何建议、链接或其他任何东西来继续这个小项目。

将时钟面作为背景,然后使用PictureBox的Paint()事件将指针放在顶部。类似于

    private Bitmap HourHand;
    private int HourDegree =45;

    private void pictureBox1_Paint(object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;
        g.TranslateTransform(pictureBox1.Width / 2, pictureBox1.Height / 2);
        g.RotateTransform(HourDegree);
        g.DrawImage(HourHand, new Point(0, 0));
    }

由于某种原因,我不能使用canvas类型。我已尝试将System.Controls添加到名称空间,但没有帮助。请告诉我如何每秒调用此函数?在窗体中添加一个计时器,并将其间隔设置为1000。在Tick事件中,只需调用
pictureBox1.Refresh()