📄 c13_2f.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop
#include "C13_2f.h"
//---------------------------------------------------------------------------
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{ // 构造函数
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ExitClick(TObject *Sender)
{
Close(); // 关闭当前窗体
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LStyle2Click(TObject *Sender)
{
TMenuItem *p = (TMenuItem*)Sender;
Image1->Canvas->Pen->Style = psDash; // 该设置只有在线宽(Width)
// 为“1”时有效,
// 如果Pen->Width>1,将忽略该设置
// 并使用缺省的实线。
p->Checked = true;
OneClick(Sender); // 设置线宽
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LStyle1Click(TObject *Sender)
{
TMenuItem *p = (TMenuItem*)Sender; // 指针类型转换
Image1->Canvas->Pen->Style = psSolid; // 实线
p->Checked = true; // 设置菜单选择
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LStyle3Click(TObject *Sender)
{
TMenuItem *p = (TMenuItem*)Sender; // 指针类型转换
Image1->Canvas->Pen->Style = psDashDot; // 点划线,
// 该设置只有在Pen->Width=1时有效。
p->Checked = true; // 设置菜单
OneClick(Sender); // 设置线宽(为1)
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LStyle4Click(TObject *Sender)
{
TMenuItem *p = (TMenuItem*)Sender; // 指针类型转换
Image1->Canvas->Pen->Style = psDashDotDot; // 双点划线
// 该设置只有在Pen->Width=1时有效。
p->Checked = true; //设置菜单选择
OneClick(Sender); // 设置线宽
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OneClick(TObject *Sender)
{
Image1->Canvas->Pen->Width = 1; // 设置线宽
One->Checked = true; // “选择”菜单
sOne->Down = true; // “按下”按钮
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TwoClick(TObject *Sender)
{
Image1->Canvas->Pen->Width = 2; // 设置线宽
Two->Checked = true; // “选择”菜单
sTwo->Down = true; // “按下”按钮
Image1->Canvas->Pen->Style = psSolid; // 设置线形(为实线)。
LStyle1->Checked = true; // 设置线形菜单显示
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ThreeClick(TObject *Sender)
{
Image1->Canvas->Pen->Width = 3; // 设置线宽
Three->Checked = true; // “选择”菜单
sThree->Down = true; // “按下”按钮
Image1->Canvas->Pen->Style = psSolid; // 设置线形(为实线)。
LStyle1->Checked = true; // 设置线形菜单显示
Image1->Canvas->Pen->Style = psSolid; // 设置线形(为实线)。
LStyle1->Checked = true; // 设置线形菜单显示
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FiveClick(TObject *Sender)
{
Image1->Canvas->Pen->Width = 5; // 设置线宽
Five->Checked = true; // “选择”菜单
sFive->Down = true; // “按下”按钮
Image1->Canvas->Pen->Style = psSolid; // 设置线形(为实线)。
LStyle1->Checked = true; // 设置线形菜单显示
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
Image1->Canvas->Refresh(); // 强制刷新画布
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BlackClick(TObject *Sender)
{
Black->Checked = true; // “选择”菜单
sBlack->Down = true; // “按下”按钮
Image1->Canvas->Pen->Color = clBlack; // 设置笔颜色为黑色
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RedClick(TObject *Sender)
{
Red->Checked = true; // “选择”菜单
sRed->Down = true; // “按下”按钮
Image1->Canvas->Pen->Color = clRed; // 设置笔颜色为红色
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BlueClick(TObject *Sender)
{
Blue->Checked = true; // “选择”菜单
sBlue->Down = true; // “按下”按钮
Image1->Canvas->Pen->Color = clBlue; // 设置笔颜色为蓝色
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GreenClick(TObject *Sender)
{
Green->Checked = true; // “选择”菜单
sGreen->Down = true; // “按下”按钮
Image1->Canvas->Pen->Color = clGreen; // 设置笔颜色为绿色
}
//---------------------------------------------------------------------------
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::FormCreate(TObject *Sender)
{
Drawing = false; // 初始化
}
//---------------------------------------------------------------------------
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);
}
//---------------------------------------------------------------------------
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);
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -