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

📄 c13_2f.cpp

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