рисование — рисовать новую линию каждый раз, когда мышь перемещается в c ++ builder

У меня есть код, который я хочу загрузить каждый раз, когда я перемещаю курсор мыши; он рисует линию в направлении мыши и дальше, и каждый раз, когда линия достигает определенной координаты х, линия отражает. Проблема в том, что теперь программа рисует линию только когда я нажимаю на PaintBox.
Вот мой код до сих пор:

void __fastcall TForm2::PaintBox1Click(TObject *Sender)
{
Form2->Refresh();
TPoint P;
::GetCursorPos( &P );
P = ScreenToClient( P );
int XX;
int YY;
if (P.x<240)
{
XX=15;
YY= ((445-P.y)*(XX-P.x)/(240-P.x)+P.y);
}
else if(P.x==240)
{
XX=240;YY=-5;
}
else
{
XX=465;
YY= ((445-P.y)*(XX-P.x)/(240-P.x)+P.y);
}
int delta=2*(445-YY);

this->Canvas->MoveTo(240, 445);
this->Canvas->LineTo(XX,YY);
while(0<YY&&YY<480&&YY!=445)
{
XX=abs(480-XX);
YY-=delta;
this->Canvas->LineTo(XX,YY);
}
}

0

Решение

Вы пытаетесь рисовать в OnClick обработчик события. Это не то место, чтобы рисовать. Единственное правильное место для рисования в ящик для краски VCL от его OnPaint обработчик события.

Вам нужно будет ответить на OnClick хоть. Запишите местоположение щелчка и обновите любое состояние, которое вам нужно поддерживать. Тогда позвони Invalidate на коробке краски, чтобы форсировать цикл рисования.

1

Другие решения

Других решений пока нет …