我每次移动鼠标光标时都会加载一段代码;它绘制线条到鼠标的方向和更远的方向,每当线条到达某个x坐标时,线条就会反射出来。问题是现在程序只在我点击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 :(得分:1)
您正试图在OnClick
事件处理程序中绘制。这是错误的绘画地点。绘制到VCL绘图框的唯一正确位置来自其OnPaint
事件处理程序。
但您需要回复OnClick
。记下点击的位置并更新您需要维护的任何状态。然后在绘图框上调用Invalidate
以强制进行绘画循环。