Slavka_online
@Slavka_online
Интересная личность

Нарисовать стрелочку у тахометра, новые координаты

const double PI=3.14;
	double rad = 0.0;
	int X,Y;
	const int R=10*size;

	float k=(max-min)/6;
	int n[7];
	for (int i = 0; i < 7; i++) {

		 n[i]=min+k*i;
	}
	 for (int i = -45, j=6; i <315;i+=45) {

	 if (i!=270) {
		rad = (i * (PI/180));
		Y = y-R * sin(rad);
		X = x+R * cos(rad);

		int Y1 = y-R*0.8 * sin(rad);
		int X1 = x+R*0.8 * cos(rad);

		int Y2 = y-R*0.7 * sin(rad);
		int X2 = x+R*0.7 * cos(rad);

		image ->Canvas->MoveTo(X1,Y1);
		image ->Canvas->LineTo(X,Y);
		image->Canvas->TextOutW(X2,Y2, n[j]);
		j--;
	 }

//стрелка
if (max!=0 && min!=0) {


	 float i =225-value*(360/(float(max - min)) );

	 ShowMessage(i);
	   rad = (i * PI/180);

	   int	Y3 = y-R * sin(rad);
	   int  X3 = x+R * cos(rad);

		image ->Canvas->MoveTo(x,y);
		image ->Canvas->LineTo(X3,Y3);
		image ->Canvas->TextOutW(X3,Y3,value);

	 }


код для значения, но он подходит только для полного циферблата у которого обход 360, но ведь у меня 270, помогите как сместить это.
577a8625cc2f4456a22029621d2b340f.png
  • Вопрос задан
  • 2663 просмотра
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Переводим значение для тахометра в интервал от 0 до 1 (0 - минимальное, судя по рисунку - 720, 1 - максимальное значение, 960). Умножаем на максимальное количество градусов (270). Таким образом для 720 у вас будет 0 градусов, для 960 - 270. Добавляем нужный константный угол (у вас же 720 явно не в нуле окружности)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы