首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

刚刚接到的15分~请帮忙解决方法

2012-02-26 
刚刚接到的15分~~请帮忙intstart_x,start_yvoid__fastcallTForm1::FormMouseDown(TObject*Sender,TMouseB

刚刚接到的15分~~请帮忙
int   start_x,start_y;
void   __fastcall   TForm1::FormMouseDown(TObject   *Sender,   TMouseButton   Button,
            TShiftState   Shift,   int   X,   int   Y)
{
      if(Button==mbLeft)
      {
            start_x=X;
            start_y=Y;
            Canvas-> TextOut(10,40, "移动鼠标到线的终点按住鼠标右键 ");
      }
      if(Button==mbRight)
            Canvas-> LineTo(X,Y);  
}


这是一个划线的程序,可是运行时和预想的不一样。
            start_x=X;
            start_y=Y;
这两句本来是用来定义起点的,可是在运行中发现,无论左键点在哪,然后再点右键,发现起点均是在一个地方,即“移动鼠标到线的终点按住鼠标右键”这句话的最后面。请问这是什么问题呢?该怎么办呢?

[解决办法]
汗~MoveTo()要放在TextOut()后面啊!
你用TextOut()时起点已经改变,要用MoveTo()指回你点的地方

int start_x,start_y;
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if(Button==mbLeft)
{
start_x=X;
start_y=Y;
Canvas-> TextOut(10,40, "移动鼠标到线的终点按住鼠标右键 ");
Canvas-> MoveTo(X,Y);
}
if(Button==mbRight)
Canvas-> LineTo(X,Y);
}

热点排行