📄 unit1.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <jpeg.hpp>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit4.h"
#include "Unit5.h"
#include "Unit6.h"
#include "Unit7.h"
#include "Unit8.h"
#include "Unit9.h"
#include "Unit10.h"
#include "Unit11.h"
#include "Unit12.h"
#include "Unit14.h"
#include "Unit15.h"
#include "Unit16.h"
#include "Unit19.h"
#include "backwindow.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TForm *fActForm2;
//---------------------------------------------------------------------------
//变量
TJPEGImage *jpeg;
int iForm2PicNum=10; //图像框的缓冲数量 //注意必须要和Form2中的iPicNum保持一致
Graphics::TBitmap* bImagetemp; //缓冲图像
AnsiString sFileName; //新建画板的变量
TForm2* fForm2Array[50]; //子窗口
bool bForm2Null[50]; //标志窗口是否可用
int iFormNum=50; //子窗数
int iActForm2; //当前活动子窗口
int iForm2Sum=0; //窗口总数
int iGraphStyle=0; //图形的样式
int iGraphThick=1; //图形的粗细
TColor tGraphColor; //图形颜色
TColor tBrushColor; //填充颜色
TColor tGroundColor; //背景色
bool bIsTransparence=true; //是否透明
int iNewWidth,iNewHeight; //新建画布宽和高
TRect rnew;
extern int iPointRange; //点运算范围
int iMASAIKE; //马赛克颗粒大小
int iExposureColor; //曝光度
TPoint pProcessBegin,pProcessEnd; //处理图像的开始点和终止点的坐标
float fWr,fWg,fWb; //加权平均图像处理参数
int iReturnValue; //取值窗口返回值
int ilineB; //灰度变换参数
float flineA; //灰度变换参数
int iTemplate[4][4]; //平滑操作参数 模板
int iTNum=3; //平滑操作参数 模板维度
int iThre=10; //锐化参数 阈值
long lCopyStyle; //合并参数
int iCopyDestop; //截屏时的变量 1最小化全屏,2最小化任意取,11全屏立即拷贝,12立即任意取
bool bFullCopy; //截屏模式
int iMyCursorOrder[10]={10,11,12,13,14,15,16,17,18,19}; //光标
AnsiString helpadd;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
jpeg = new TJPEGImage();
lCopyStyle=SRCCOPY;
iMASAIKE=3;
tBrushColor=TColor(RGB(255,255,255));
helpadd=GetCurrentDir()+"\\help.chm";
Screen->Cursors[10]=LoadCursor(HInstance,"AC_PEN");
Screen->Cursors[11]=LoadCursor(HInstance,"AC_SUCK");
Screen->Cursors[12]=LoadCursor(HInstance,"AC_UPZOOM");
Screen->Cursors[13]=LoadCursor(HInstance,"AC_DOWNZOOM");
Screen->Cursors[14]=LoadCursor(HInstance,"AC_UNZOOM");
Screen->Cursors[15]=LoadCursor(HInstance,"AC_REC");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
delete bImagetemp;
delete jpeg;
}
//---------------------------------------------------------------------------
//创建打开画板---------------------------------------------------------------
void TForm1::f_CreatePalette()
{
int i,j;
for(i=0;i<iFormNum;i++)
{
if(bForm2Null[i])
{
fForm2Array[i]=new TForm2(this);
bForm2Null[i]=false;
fForm2Array[i]->iOrder=i; //设置此画板在画板缓冲区中的位置
iActForm2=i; //设置当前激活的画板序号
iForm2Sum++; //画板数目加1
fForm2Array[i]->Caption=sFileName; //设置画板标题
fForm2Array[i]->lPicWidth=bImagetemp->Width; //设置画板的高和宽
fForm2Array[i]->lPicHeight=bImagetemp->Height;
fForm2Array[i]->Image1->Picture->Bitmap->Assign(bImagetemp);
for(j=0;j<fForm2Array[i]->iPicNum;j++)
fForm2Array[i]->bPicArray[j]->Assign(bImagetemp);
//设置画板版面大小
fForm2Array[i]->Panel1->Width=bImagetemp->Width;
fForm2Array[i]->Panel1->Height=bImagetemp->Height;
//调整打开窗口在母窗的位置
if(bImagetemp->Width < this->Width)
{
fForm2Array[i]->Width=bImagetemp->Width+10;
fForm2Array[i]->Left=(this->Width - fForm2Array[i]->Width)/2;
}
else
fForm2Array[i]->Width=this->Width;
if(bImagetemp->Height < this->Height)
fForm2Array[i]->Height=bImagetemp->Height+28;
else
fForm2Array[i]->Height=this->ClientHeight;
fForm2Array[i]->Show();
break;
}
}
if(i>=50)
MessageBox(NULL,"缓冲窗口队列已满,无法再打开新窗口.","Warning",MB_ICONWARNING);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N3Click(TObject *Sender)
{
char cJPGNameEnd[5];
char *cpEnd;
if(OpenPictureDialog1->Execute())
{
cpEnd=StrEnd(OpenPictureDialog1->FileName.c_str());
cpEnd-=3;
StrCopy(cJPGNameEnd,cpEnd);
if(!StrComp(cJPGNameEnd,"jpg"))
{
jpeg->LoadFromFile(OpenPictureDialog1->FileName);
bImagetemp->Assign(jpeg);
}
else
bImagetemp->LoadFromFile(OpenPictureDialog1->FileName);
sFileName=OpenPictureDialog1->FileName;
f_CreatePalette();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
int i;
bImagetemp=new Graphics::TBitmap();
for(i=0;i<iFormNum;i++)
{
fForm2Array[i]=NULL;
bForm2Null[i]=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
iActForm2=0;
tGroundColor=(TColor)0x00FFFFFF;
tGraphColor=clBlack;
Form3 = new TForm3(this);
Form3->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N10Click(TObject *Sender)
{
if(!bForm2Null[iActForm2])
fForm2Array[iActForm2]->f_imageGray1();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N11Click(TObject *Sender)
{
if(!bForm2Null[iActForm2])
fForm2Array[iActForm2]->f_imageGray2();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N12Click(TObject *Sender)
{
if(bForm2Null[iActForm2])
return;
Form4=new TForm4(this);
Form4->ShowModal();
if(iReturnValue)
fForm2Array[iActForm2]->f_imageGray3(fWr,fWg,fWb);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N41Click(TObject *Sender)
{
if(!bForm2Null[iActForm2])
fForm2Array[iActForm2]->f_imageGray4();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N31Click(TObject *Sender)
{
if(!bForm2Null[iActForm2])
fForm2Array[iActForm2]->f_imageTurnover();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N15Click(TObject *Sender)
{
if(!bForm2Null[iActForm2])
{
if(fForm2Array[iActForm2]->iPicNow==fForm2Array[iActForm2]->iPicEnd)
return;
fForm2Array[iActForm2]->iPicNow--;
fForm2Array[iActForm2]->Image1->Picture->Bitmap->Assign(fForm2Array[iActForm2]->bPicArray[fForm2Array[iActForm2]->iPicNow]);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N16Click(TObject *Sender)
{
if(!bForm2Null[iActForm2])
{
if(((fForm2Array[iActForm2]->iPicNow+1)%iForm2PicNum)==fForm2Array[iActForm2]->iPicBegin)
return;
fForm2Array[iActForm2]->iPicNow++;
fForm2Array[iActForm2]->Image1->Picture->Bitmap->Assign(fForm2Array[iActForm2]->bPicArray[fForm2Array[iActForm2]->iPicNow]);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N17Click(TObject *Sender)
{
int i;
if(bForm2Null[iActForm2])
return;
gotosave:
if(SaveDialog1->Execute())
{
if(FileExists(SaveDialog1->FileName))
{
i=MessageBox(NULL,"您所指定的文件已经存在,是否覆盖?","Question",MB_YESNOCANCEL|MB_ICONQUESTION);
if(i==IDNO)
goto gotosave;
if(i==IDYES)
{
if(!DeleteFile(SaveDialog1->FileName))
{
MessageBox(NULL,"指定的文件正在使用,无法覆盖","error",MB_OK|MB_ICONERROR);
goto gotosave;
}
}
else
return;
}
fForm2Array[iActForm2]->Image1->Picture->SaveToFile(SaveDialog1->FileName);
MessageBox(NULL,"保存成功","OK",MB_OK);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N21Click(TObject *Sender)
{
if(bForm2Null[iActForm2])
return;
Form5=new TForm5(this);
Form5->ShowModal();
if(iReturnValue)
fForm2Array[iActForm2]->f_imageBright(ilineB);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N14Click(TObject *Sender)
{
if(bForm2Null[iActForm2])
return;
Form6=new TForm6(this);
Form6->ShowModal();
if(iReturnValue)
fForm2Array[iActForm2]->f_imageContrast(flineA,ilineB);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -