我的数学技能不好。我在互联网上搜索过,无法解决这个问题。
我很难设法确定一个速度表型针头。
仪表是半圈或180度。针是png图像,宽10像素,高164像素。
仪表宽378像素,高226像素。
因为我试图旋转一个高大的矩形,所以必须重新计算针位置。
Point pivotPoint = new Point(gauge.Width / 2, gauge.Height);
double degrees = -45; // example where to point the needle
有人可以给我一些实际的C#代码,这些代码可以使针头png正确定位吗?
非常感谢您的帮助。
答案 0 :(得分:1)
以下是一些代码,它将旋转的针图像绘制到带有仪表图像的PictureBox上。
我从一个从0到180的轨迹栏中获取角度。
The Needle直立倒立:
PictureBox.SizeMode设置为自动调整大小。
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
using (Bitmap needle = new Bitmap("D:\\needle3.png" ) )
{
int angle = trBar_angle.Value;
label1.Text = angle.ToString("###0°");
// this is the offset after the translation
Point targetPoint = new Point(-needle.Width / 2, needle.Width / 2);
// shortcuts for the sizes
Size nSize = needle.Size;
Size pSize = pictureBox1.ClientSize;
// this is the translation of the graphic to meet the rotation point
int transX = pSize.Width / 2;
int transY = pSize.Height - nSize.Width / 2;
//set the rotation point and rotate
e.Graphics.TranslateTransform( transX, transY );
e.Graphics.RotateTransform(angle + 90);
// draw on the rotated graphics
e.Graphics.DrawImage(needle, targetPoint);
//reset everything
e.Graphics.RotateTransform( -angle - 90);
e.Graphics.TranslateTransform( -transX, -transY );
}
}
我的针: 结果:
我希望你有一个比我制作的更好的规格; - )