⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c13_1f.cpp

📁 C++Builder编程实例详解,用具体的例子阐明C++的一些基本操作,所有程序均在BC++上编译过.可靠,建议下载
💻 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 + -