📄 c13_1f.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop
#include "C13_1f.h"
//---------------------------------------------------------------------------
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Drawing = false; // 初始化
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{ // 保存原始状态
RawLineWidth = Image1->Canvas->Pen->Width;
RawLineStyle = Image1->Canvas->Pen->Style;
RawLineColor = Image1->Canvas->Pen->Color;
// 设置异或状态
Drawing = true; // 开始拖动
Image1->Canvas->Pen->Color = clWhite; // 设置笔为白色,
// 缺省时为黑色,黑色不能用于异或色。
// 因为黑色为全零,异或后画布不变色,
// 不能看到绘图结果。
Image1->Canvas->Pen->Style = psSolid;
Image1->Canvas->Pen->Width = 1;
Image1->Canvas->Pen->Mode = pmXor;
// 保存端点位置
X1 = X2 = X;
Y1 = Y2 = Y;
// 绘制初始异或线段
Image1->Canvas->MoveTo(X1, Y1);
Image1->Canvas->LineTo(X2, Y2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if(Drawing) // 判断是否鼠标拖动状态
{ // 删除原有异或线
Image1->Canvas->MoveTo(X1, Y1);
Image1->Canvas->LineTo(X2, Y2);
// 保存新端点位置
X2 = X;
Y2 = Y;
// 绘制新异或线
Image1->Canvas->MoveTo(X1, Y1);
Image1->Canvas->LineTo(X2, Y2);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
// 删除异或线
Image1->Canvas->MoveTo(X1, Y1);
Image1->Canvas->LineTo(X2, Y2);
// 恢复设置
Image1->Canvas->Pen->Color = RawLineColor;
Image1->Canvas->Pen->Style = RawLineStyle;
Image1->Canvas->Pen->Width = RawLineWidth;
Image1->Canvas->Pen->Mode = pmCopy;
Drawing = false; // 停止拖动
// 绘制所需线段
Image1->Canvas->MoveTo(X1, Y1);
Image1->Canvas->LineTo(X, Y);
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -