Windows Forms не рисует линию по переменным

Обычную линию, где я просто указываю координаты в самой функции рисует нормально, но когда я пытаюсь передать туда координаты при помощи переменных просто ничего не выводит. Если это моя ошибка, то как ее исправить, если так задумано, то как вывести линию по переменным иначе?

Дополнено (1). private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
Graphics^ g = this->CreateGraphics();
int x, y, X=300, Y=300, Q=300, Z=390, q, z;
z = (Z-150) * 0, 9 - (Q-200) * 0,42 + 150;
q = (Z-150) * 0, 42 + (Q-200) * 0,9 + 200;
x = (X - 150) * 0, 9 - (Y - 200) * 0, 42 + 150;
y = (X - 150) * 0, 42 + (Y - 200) * 0, 9 + 200;
g->DrawLine(gcnew Pen(Color::Red), x, y, z, q); //Линия
g->DrawLine(gcnew Pen(Color::Red), 300, 300, 390, 300); //Линия
}

Округляет до нуля
z = (Z-150) * 0, 9 - (Q-200) * 0,42 + 150;
это то же самое что и
z = (Z-150) * 0 - (Q-200) * 0 + 150; потому что int откидывает дробную часть
в итоге получаем отрезок с координатами А (150,200) и В (150, 200) которая является точкой

Попробуйте так
z = (Z-150) * 9 / 10 - (Q-200) * 42 / 100 + 150;
А лучше используйте переменные с плавающей точкой

Десятичные дроби в C++ (как и в других языках программирования) разделяются точкой, а не запятой.
В языках с Си-подобным синтаксисом запятой разделяются выражения.

z = (Z-150) * 0, 9 - (Q-200) * 0,42 + 150;
В данном случае это выполнится так же, как если запятые заменить на точки с запятой.
Если написать так
z = ((Z-150) * 0, 9 - (Q-200) * 0,42 + 150);
то z будет присвоено значение 42 + 150

Добавить комментарий