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

📄 unit2.cpp

📁 C++Builder高级应用开发指南随书源码
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm2::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
  IsRegionSelected=true;
  OriginPt = Point(X, Y);
  MovePt = OriginPt;
}
//---------------------------------------------------------------------------

void __fastcall TForm2::FormCreate(TObject *Sender)
{
  SetBounds( 0, 0, Screen->Width, Screen->Height );        
}
//---------------------------------------------------------------------------
void  TForm2::CaptureRegion(void)
{
    if((MovePt.y-OriginPt.y)!=0)
    {
      int Width=abs(MovePt.x-OriginPt.x);
      int Height=abs(MovePt.y-OriginPt.y);
      int Originx=OriginPt.x;
      int Originy=OriginPt.y;
      if (MovePt.x < OriginPt.x) Originx = MovePt.x;
      if (MovePt.y < OriginPt.y) Originy = MovePt.y;
      // 将桌面图像的指定区域拷贝到Form1上的Image1中
      StretchBlt(Form1->Image1->Canvas->Handle,
                 0,0,
                 Width,
                 Height,
                 Image1->Canvas->Handle,
                 Originx,
                 Originy,
                 Width,
                 Height,
                 SRCCOPY);
      Form1->Image1->Width=abs(MovePt.x-OriginPt.x);
      Form1->Image1->Height=abs(MovePt.y-OriginPt.y);
      Form1->Image1->Picture->Bitmap->Width=abs(MovePt.x-OriginPt.x);
      Form1->Image1->Picture->Bitmap->Height=abs(MovePt.y-OriginPt.y);
    }
    else
    {
      Form1->Image1->Picture->Bitmap->Canvas->Brush->Color=clWhite;
      Form1->Image1->Picture->Bitmap->Canvas->FillRect(Canvas->ClipRect) ;
    }
}
//---------------------------------------------------------------------------
void  TForm2::DrawRect(TPoint TopLeft, TPoint BottomRight, TPenMode Mode)
{
  Canvas->Pen->Mode = Mode;
  Canvas->Pen->Width = 2;
  Canvas->Rectangle(TopLeft.x, TopLeft.y, BottomRight.x, BottomRight.y);
}
//-----------------------------------------------------------------------------
void __fastcall TForm2::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
  if (IsRegionSelected){
    DrawRect(OriginPt, MovePt, pmNotXor);
    MovePt = Point(X, Y);
    MovePt.x=MovePt.x+Image1->Left;
    MovePt.y=MovePt.y+Image1->Top;
    DrawRect(OriginPt, MovePt, pmNotXor);
  }        
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Image1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
  if (IsRegionSelected)
  {
    MovePt = Point(X, Y);
    IsRegionSelected=false;
    CaptureRegion();
  }
  Form1->Visible=true;
  Form2->Visible=false;        
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -