0

我正在使用 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;
}

//---------------------------------------------------------------------------

'''

4

0 回答 0