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
- Я не могу изменить иконку формы в c# windows forms пишит файл должен быть в формате .ico Так вот хотя у меня и так расширение .ico он всё равно пишит это. Помогите кто может! Очень прощу!
- Как сделать чтобы picturebox двигался по WASD напишите код с# Windows forms Visual studio Как сделать чтобы picturebox двигался по WASD напишите пожалуйста код с# Windows forms Visual studio
- Как нажать кнопку в Windows Forms путём нажатия клавиши на клавиатуре? C Я сделал программу работающую на таймере. Есть две кнопки, одна которая запускает таймер, а другая, которая таймер останавливает. Так вот, я хочу, чтобы та кнопка, которая останавливает таймер нажималась на пробел.
- C# Windows Forms (Майл не ругайся) Создать массив кнопок (3 шт). Вывести их. По нажатию на кнопочку - перемешать все кнопочки. В чем проблема? Не могу обработать нажатие, так как фактически в конструкторе кнопок нет.