бесплатное рисование на холсте с помощью мыши

Я делаю своего рода программу для рисования с помощью компоновщика С++. Программа хорошо работает с мышью, но есть проблема с распознаванием, когда я рисую на планшете, особенно пишу буквы.

Представляю образ программы. Одни и те же вещи пишутся мышью и пером планшета.

Кажется, я нашел причину проблемы. Когда я быстро повторяю MouseDown и MouseUp пером планшета, программа распознает движение мыши, поэтому вместо двух точек рисуется короткая линия.

Поэтому я должен заставить программу распознавать событие MouseUp, как только перо отделяется от планшета, как это делает мышь.

Есть ли способ распознать событие мыши, кроме события MouseClick->false или MouseUp? Я уже пытался использовать переключение переменной в событиях MouseDown и MouseUp, но это не работает.

'''

      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;
}

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

'''

0 ответов

Другие вопросы по тегам