我正在使用 C++ 构建器制作一种画笔程序。该程序在鼠标上运行良好,但是当我用平板电脑绘图时,尤其是写字母时,会出现识别问题。
我提交程序的图像。 用鼠标和数位笔写同样的东西。
我想我找到了问题的原因。当我用数位板笔快速重复 MouseDown 和 MouseUp 时,程序会识别出它是鼠标移动,因此绘制的是短线而不是两个点。
因此,一旦笔与鼠标一样与平板电脑分离,我必须让程序识别 MouseUp 事件。
除了 MouseClick->false 或 MouseUp 事件之外,还有什么方法可以识别鼠标向上吗?我已经尝试在 MouseDown 和 MouseUp 事件中使用 switch 变量,但它不起作用。
'''
void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
Image1->Picture->Bitmap->Canvas->MoveTo(X,Y);
pt_x=X;
pt_y=Y;
if (Button == mbLeft){
if(type==0){ //penmode
Image1->Picture->Bitmap->Canvas->Pen->Color = ColorDialog1->Color;
PenColor = ColorDialog1->Color;
}
else if(type==1) //erasermode
{
Image1->Picture->Bitmap->Canvas->Pen->Color = clWhite;
PenColor = clWhite;
}
}
else if (Button == mbRight) //eraser mode for right click
{
Image1->Picture->Bitmap->Canvas->Pen->Color = clWhite;
PenColor = clWhite;
}
Image1->Picture->Bitmap->Canvas->Pen->Width = ScrollBar1->Position;
PenWidth = ScrollBar1->Position;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
{
if(Shift.Contains(ssLeft))
{
Image1->Picture->Bitmap->Canvas->MoveTo(pt_x,pt_y);
Image1->Picture->Bitmap->Canvas->LineTo(X,Y);
pt_x=X;
pt_y=Y;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
MouseClick=false;
}
//---------------------------------------------------------------------------
'''