📄 unit1.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
FHClipRgn = NULL;
//此Canvas为全域运用
FScreenCanvas = new TCanvas();
//控制是否为鼠标左键单击状态
bDragging = false;
}
//---------------------------------------------------------------------------
//解构函数
__fastcall TForm1::~TForm1()
{
//释放对象handle
::DeleteObject(FHClipRgn);
//释放Canvas
delete FScreenCanvas;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
//获取全屏幕DC
FScreenCanvas->Handle = ::GetDC(0);
//若有已选取区域handle存在,则删除此对象
if (FHClipRgn) ::DeleteObject(FHClipRgn);
//建立并选取与Image1相同的区块
RECT ClipRect = static_cast<RECT>(Image1->Parent->ClientRect);
//取得相对位置
::OffsetRect(&ClipRect,
Image1->Parent->ClientOrigin.x,
Image1->Parent->ClientOrigin.y);
//建立一矩形区域,并返回此区域handle
FHClipRgn = ::CreateRectRgnIndirect(&ClipRect);
//再将此区域选入DC,由全域Canvas主控绘制
::SelectClipRgn(FScreenCanvas->Handle, FHClipRgn);
//重设全域Canvas画笔模式
FScreenCanvas->Pen->Mode = pmNotXor;
//制作一网状图文件,以提供全域Canvas为画笔花纹
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -