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

📄 mainform.cpp

📁 C++ BUILDER精彩编程实例集锦(源码)2 第三部分 文件操作 第四部分 图像处理
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Mainform.h"
#include "math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{//图象从中间往左右分出
  BITMAP bm;
  Graphics::TBitmap *Bitmap;
  //定义一个图象句柄
  Graphics::TBitmap *Bitmap1=this->Image1->Picture->Bitmap;
  //取得显示窗口的颜色属性
  if(GetDeviceCaps(Form1->Canvas->Handle,BITSPIXEL)==8)
  {
     GetObject(Bitmap1->Handle,sizeof(BITMAP),(LPSTR)&bm);
     //如果特效显示的图象颜色属性为256色
     if(bm.bmBitsPixel==8)
     {
        //从特效显示的颜色画板中提取配色方案
        SelectPalette(Form1->Canvas->Handle,Bitmap1->Palette,FALSE);
        //在显示窗口中设置配色方案
        RealizePalette(Form1->Canvas->Handle);
     }
     Bitmap->HandleType=bmDDB;
  }
   Image1->Refresh( );
   int WideHalf=Bitmap1->Width/2+Bitmap1->Width%2;
   for(int i=0;i<=WideHalf; i++)
   {
     TRect DestRect=Rect(WideHalf-i,0,WideHalf+i,Bitmap1->Height);
     TRect SourceRect=Rect(WideHalf-i,0,WideHalf+i,Bitmap1->Height);
     Form1->Canvas->CopyRect(DestRect,Bitmap1->Canvas,SourceRect);
     Sleep(10);
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
   if(this->OpenDialog1->Execute())
   {
     AnsiString StrFile=this->OpenDialog1->FileName;
     this->Image1->Picture->LoadFromFile(StrFile);
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{// 图像从中间往上下分出
  BITMAP bm;
  Graphics::TBitmap *Bitmap;
  Graphics::TBitmap *Bitmap1=this->Image1->Picture->Bitmap;
  if(GetDeviceCaps(Form1->Canvas->Handle,BITSPIXEL)==8)
  {
     GetObject(Bitmap1->Handle,sizeof(BITMAP),(LPSTR)&bm);
     if(bm.bmBitsPixel==8)
     {
        SelectPalette(Form1->Canvas->Handle,Bitmap1->Palette,FALSE);
        RealizePalette(Form1->Canvas->Handle);
     }
     Bitmap->HandleType=bmDDB;
  }
   Form1->Refresh( );
   int HeightHalf=Bitmap1->Height/2+Bitmap1->Height%2;
   for(int i=0;i<=HeightHalf;i++)
   {
     TRect DestRect=Rect(0,0,Bitmap1->Width,i);
     TRect SourceRect=Rect(0,HeightHalf-i,Bitmap1->Width,HeightHalf);
     TRect Dest2=Rect(0,Bitmap1->Height-i,Bitmap1->Width,Bitmap1->Height);
     TRect Source2=Rect(0,HeightHalf,Bitmap1->Width,HeightHalf+i);
     Form1->Canvas->CopyRect(DestRect,Bitmap1->Canvas,SourceRect);
     Form1->Canvas->CopyRect(Dest2,Bitmap1->Canvas,Source2);
     Sleep(10);
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn4Click(TObject *Sender)
{//图像从左刷屏显示
  BITMAP bm;
  Graphics::TBitmap *Bitmap;
  Graphics::TBitmap *Bitmap1=this->Image1->Picture->Bitmap;
  if(GetDeviceCaps(Form1->Canvas->Handle,BITSPIXEL)==8)
  {
     GetObject(Bitmap1->Handle,sizeof(BITMAP),(LPSTR)&bm);
     if(bm.bmBitsPixel==8)
     {
        SelectPalette(Form1->Canvas->Handle,Bitmap1->Palette,FALSE);
        RealizePalette(Form1->Canvas->Handle);
     }
     Bitmap->HandleType=bmDDB;
  }
   Form1->Refresh( );
   for(int i=0;i<=Bitmap1->Width;i++)
   {
     TRect DestRect =Rect(0,0,i,Bitmap1->Height);
     TRect SourceRect =Rect(0,0,i,Bitmap1->Height);
     Form1->Canvas->CopyRect(DestRect,Bitmap1->Canvas,SourceRect);
     Sleep(10);
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn5Click(TObject *Sender)
{//图像从上刷屏显示
  BITMAP bm;
  Graphics::TBitmap *Bitmap;
  Graphics::TBitmap *Bitmap1=this->Image1->Picture->Bitmap;
  if(GetDeviceCaps(Form1->Canvas->Handle,BITSPIXEL)==8)
  {
     GetObject(Bitmap1->Handle,sizeof(BITMAP),(LPSTR)&bm);
     if(bm.bmBitsPixel==8)
     {
        SelectPalette(Form1->Canvas->Handle,Bitmap1->Palette,FALSE);
        RealizePalette(Form1->Canvas->Handle);
     }
     Bitmap->HandleType=bmDDB;
  }
   Form1->Refresh( );
   for(int i=0;i<=Bitmap1->Height;i++)
   {
     TRect DestRect=Rect(0,0,Bitmap1->Width+0,i+0);
     TRect SourceRect=Rect(0,0,Bitmap1->Width,i);
     Form1->Canvas->CopyRect(DestRect,Bitmap1->Canvas,SourceRect);
     Sleep(10);
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn6Click(TObject *Sender)
{ //图像从上往下流水
  BITMAP bm;
  Graphics::TBitmap *Bitmap;
  Graphics::TBitmap *Bitmap1=this->Image1->Picture->Bitmap;
  if(GetDeviceCaps(Form1->Canvas->Handle,BITSPIXEL)==8)
  {
     GetObject(Bitmap1->Handle,sizeof(BITMAP),(LPSTR)&bm);
     if(bm.bmBitsPixel==8)
     {
        SelectPalette(Form1->Canvas->Handle,Bitmap1->Palette,FALSE);
        RealizePalette(Form1->Canvas->Handle);
     }
     Bitmap->HandleType=bmDDB;
  }
   Form1->Refresh( );
   for(int i=Bitmap1->Height;i>=0;i--)
   {
     TRect SourceRect=Rect(0,i,Bitmap1->Width,i+1);
     for(int j1=0;j1<=i;j1++)
     {
       TRect DestRect=Rect(0 ,j1,Bitmap1->Width+0,j1+1);
       Form1->Canvas->CopyRect(DestRect,Bitmap1->Canvas,SourceRect);
     }
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn7Click(TObject *Sender)
{//图像从下往上流水
  BITMAP bm;
  Graphics::TBitmap *Bitmap;
  Graphics::TBitmap *Bitmap1=this->Image1->Picture->Bitmap;
  if(GetDeviceCaps(Form1->Canvas->Handle,BITSPIXEL)==8)
  {
     GetObject(Bitmap1->Handle,sizeof(BITMAP),(LPSTR)&bm);
     if(bm.bmBitsPixel==8)
     {
        SelectPalette(Form1->Canvas->Handle,Bitmap1->Palette,FALSE);
        RealizePalette(Form1->Canvas->Handle);
     }
     Bitmap->HandleType=bmDDB;
  }
   Form1->Refresh( );
   for(int i=0;i<=Bitmap1->Height;i++)
   {
     TRect SourceRect=Rect(0,i,Bitmap1->Width,i+1);
     for(int j1=Bitmap1->Height-1;j1>=i;j1--)
     {
       TRect DestRect=Rect(0,j1,Bitmap1->Width,j1+1);
       Form1->Canvas->CopyRect(DestRect,Bitmap1->Canvas,SourceRect);
     }
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn8Click(TObject *Sender)
{//图像圆形展出
  BITMAP bm;
  Graphics::TBitmap *Bitmap;
  Graphics::TBitmap *Bitmap1=this->Image1->Picture->Bitmap;
  if(GetDeviceCaps(Form1->Canvas->Handle,BITSPIXEL)==8)
  {
     GetObject(Bitmap1->Handle,sizeof(BITMAP),(LPSTR)&bm);
     if(bm.bmBitsPixel==8)
     {
        SelectPalette(Form1->Canvas->Handle,Bitmap1->Palette,FALSE);
        RealizePalette(Form1->Canvas->Handle);
     }
     Bitmap->HandleType=bmDDB;
  }
   Form1->Refresh( );
   int j1=sqrt(Bitmap1->Width*Bitmap1->Width+Bitmap1->Height*Bitmap1->Height)/2+4;
   for (int i=1;i<j1;i++)
   {
     HRGN MyRgn=CreateEllipticRgn(Bitmap1->Width/2-i,Bitmap1->Height/2-i,Bitmap1->Width/2+i,Bitmap1->Height/2+i);
     SelectObject(Canvas->Handle,MyRgn);
     Canvas->Draw(0,0,Bitmap1);
     DeleteObject(MyRgn);
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn9Click(TObject *Sender)
{//图像左右错移
  BITMAP bm;
  Graphics::TBitmap *Bitmap;
  Graphics::TBitmap *Bitmap1=this->Image1->Picture->Bitmap;
  if(GetDeviceCaps(Form1->Canvas->Handle,BITSPIXEL)==8)
  {
     GetObject(Bitmap1->Handle,sizeof(BITMAP),(LPSTR)&bm);
     if(bm.bmBitsPixel==8)
     {
        SelectPalette(Form1->Canvas->Handle,Bitmap1->Palette,FALSE);
        RealizePalette(Form1->Canvas->Handle);
     }
     Bitmap->HandleType=bmDDB;
  }
   Form1->Refresh( );
   int HeightHalf=Bitmap1->Height/2+Bitmap1->Height%2;
   TRect SourceRect=Rect(0,0,Bitmap1->Width,HeightHalf);
   TRect Source2=Rect(0,HeightHalf,Bitmap1->Width,Bitmap1->Height);
   for(int i=0;i<=Bitmap1->Width;i++)
   {
     TRect DestRect=Rect(0-Bitmap1->Width+i,0,i,0+HeightHalf);
     TRect Dest2=Rect(Bitmap1->Width-i,HeightHalf,Bitmap1->Width+Bitmap1->Width-i,Bitmap1->Height+0);
     Form1->Canvas->MoveTo(0-Bitmap1->Width+i-1,0);
     Form1->Canvas->LineTo(0-Bitmap1->Width+i-1,HeightHalf);
     Form1->Canvas->CopyRect(DestRect,Bitmap1->Canvas,SourceRect);
     Form1->Canvas->MoveTo(Bitmap1->Width+Bitmap1->Width-i,0);
     Form1->Canvas->LineTo(Bitmap1->Width+Bitmap1->Width-i,Bitmap1->Height);
     Form1->Canvas->CopyRect(Dest2,Bitmap1->Canvas,Source2);
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn10Click(TObject *Sender)
{//图像上下错移
  BITMAP bm;
  Graphics::TBitmap *Bitmap;
  Graphics::TBitmap *Bitmap1=this->Image1->Picture->Bitmap;
  if(GetDeviceCaps(Form1->Canvas->Handle,BITSPIXEL)==8)
  {
     GetObject(Bitmap1->Handle,sizeof(BITMAP),(LPSTR)&bm);
     if(bm.bmBitsPixel==8)
     {
        SelectPalette(Form1->Canvas->Handle,Bitmap1->Palette,FALSE);
        RealizePalette(Form1->Canvas->Handle);
     }
     Bitmap->HandleType=bmDDB;
  }
   Form1->Refresh( );
   int WideHalf=Bitmap1->Width/2+Bitmap1->Width%2;
   TRect SourceRect=Rect(0,0,WideHalf,Bitmap1->Height);
   TRect Source2=Rect(WideHalf,0,Bitmap1->Width,Bitmap1->Height);
   for(int i=0;i<=Bitmap1->Height;i++)
   {
     TRect DestRect=Rect(0,0-Bitmap1->Height+i,WideHalf,0+i);
     TRect Dest2=Rect(WideHalf,Bitmap1->Height-i,Bitmap1->Width,Bitmap1->Height);
     Form1->Canvas->LineTo(WideHalf,0-Bitmap1->Height+i-1);
     Form1->Canvas->CopyRect(DestRect,Bitmap1->Canvas,SourceRect);
     Form1->Canvas->MoveTo(WideHalf,Bitmap1->Height+Bitmap1->Height-i);
     Form1->Canvas->LineTo(Bitmap1->Width,Bitmap1->Height+Bitmap1->Height-i);
     Form1->Canvas->CopyRect(Dest2,Bitmap1->Canvas,Source2);
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn11Click(TObject *Sender)
{//图像从右移入
  BITMAP bm;
  Graphics::TBitmap *Bitmap;
  Graphics::TBitmap *Bitmap1=this->Image1->Picture->Bitmap;
  if(GetDeviceCaps(Form1->Canvas->Handle,BITSPIXEL)==8)
  {
     GetObject(Bitmap1->Handle,sizeof(BITMAP),(LPSTR)&bm);
     if(bm.bmBitsPixel==8)
     {
        SelectPalette(Form1->Canvas->Handle,Bitmap1->Palette,FALSE);
        RealizePalette(Form1->Canvas->Handle);
     }
     Bitmap->HandleType=bmDDB;
  }
   Form1->Refresh( );
   for(int i=0;i<=Bitmap1->Width;i++)
   {
     TRect DestRect=Rect(Bitmap1->Width-i,0,Bitmap1->Width,Bitmap1->Height);
     TRect SourceRect=Rect(0,0,i,Bitmap1->Height);
     Form1->Canvas->CopyRect(DestRect,Bitmap1->Canvas,SourceRect);
   }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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