c++ - 每次在 C++ 构建器中移动鼠标时绘制新行

标签 c++ drawing draw c++builder c++builder-2010

每次移动鼠标光标时,我都想加载一个代码;它向鼠标方向及以后绘制线,每次线到达某个 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);
   }
}

最佳答案

您正在尝试在 OnClick 事件处理程序中进行绘制。那是画错的地方。向 VCL 绘画框绘画的唯一正确位置是来自其 OnPaint 事件处理程序。

不过,您需要响应 OnClick。记下点击的位置并更新您需要维护的任何状态。然后调用绘制框上的 Invalidate 以强制绘制循环。

关于c++ - 每次在 C++ 构建器中移动鼠标时绘制新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22570515/

相关文章:

C++ 类不是自身的基础

c++ - 关于绘图算法的好书,最好是 C 或 C++

iphone - 在 UIView 中逐步绘制 (iPhone)

Java:每 X 秒执行一次操作

android - 如何在 View 类中设置定时器?

c++ - 允许仅使用动态分配来分配对象

c++ - 为什么 gcc 和 icc 为 C++ 函数生成具有相同标签名称的 asm?

c++ - 这是词法分析器的代码 谁能详细解释这段代码?

Java绘制RadialGradientPaint圆切成矩形

python - 如何在 pygame 中在屏幕顶部显示分数?