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