Задача
Рисовать на области Canvas: вести линию за курсором мыши при зажатой кнопке.
Компоненты на форме
PaintBox, Button (ButtonClear).
Как работает
- На MouseDown запомнить точку.
- На MouseMove при нажатой кнопке тянуть линию.
- На MouseUp прекращать рисование.
Исходный код модуля
//---------------------------------------------------------------------------
// Проект 31. Рисование мышью на Canvas
// Линия за курсором при зажатой кнопке.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------
// Простейший графредактор: запоминаем точку на MouseDown и тянем линию
// за курсором, пока кнопка нажата. Основа работы с Canvas и событиями мыши.
bool FDown=false; int Fx=0, Fy=0;
void __fastcall TForm1::PaintBoxMouseDown(TObject*,TMouseButton,TShiftState,int X,int Y)
{ FDown=true; Fx=X; Fy=Y; }
void __fastcall TForm1::PaintBoxMouseMove(TObject*,TShiftState,int X,int Y)
{
if (!FDown) return;
PaintBox1->Canvas->Pen->Color = clLime;
PaintBox1->Canvas->MoveTo(Fx,Fy);
PaintBox1->Canvas->LineTo(X,Y);
Fx=X; Fy=Y;
}
void __fastcall TForm1::PaintBoxMouseUp(TObject*,TMouseButton,TShiftState,int,int){ FDown=false; }
void __fastcall TForm1::ButtonClearClick(TObject *Sender)
{
PaintBox1->Canvas->Brush->Color=clBlack;
PaintBox1->Canvas->FillRect(PaintBox1->ClientRect);
}
//---------------------------------------------------------------------------
Пояснения
- Canvas->MoveTo/LineTo рисуют отрезок.
- Состояние «кнопка нажата» хранится в переменной.
📦 help-user.ru — срочный ремонт компьютеров и восстановление данных в Москве: help-user.ru.
Что дальше
Создайте в C++Builder новый проект, разместите перечисленные компоненты и вставьте код модуля. Остальные 49 программ — в разделе проектов на C++Builder; смотрите также обзор среды и контроллеры AVR.