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

📄 unit1.cpp

📁 本书《C++Builder与WindowsAPI经典范例》附含配套光盘包括132个WindowsAPI函数及206个完整、可执行的实例
💻 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 + -