📄 unit1.cpp
字号:
}
pkn1=0;pkn2=0;
//定点所加程序***************************************
BoChangCheck(); //校正波长
//0717 在图谱上显示波长和峰值
bPVonImage=false;
bWLonImage=true;
//***************************************************
TRect rs,rd;
rs.Left=0; rs.Top=0;
rs.Right=Image2->Width;
rs.Bottom=Image2->Height;
rd.Left=0; rd.Top=0;
rd.Right=Image1->Width;
rd.Bottom=Image1->Height;
//Stop->Enabled=true;
Scan->Enabled=true;
Search->Enabled=true;
DrawBK();
//DrawQX();
//Image1->Canvas->CopyRect(rd,Image2->Canvas,rs);
//Image1->Canvas->Rectangle(wx0,wy0,wx1,wy1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MuCL1Click(TObject *Sender)
{ // 测量方式->光谱扫描
DisableMenuItems();
//DrawBK();
Image1->Repaint();
if(Thread1!=NULL)
DeleteThread1();
CreatThread1();
Thread1->SetFun((ExecFun) To_scan);
bStop=false;
Thread1->Resume();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MuCL2Click(TObject *Sender)
{ // 测量方式->基线扫描
DisableMenuItems();
if(Thread1!=NULL)
DeleteThread1();
CreatThread1();
Thread1->SetFun((ExecFun) To_baseline_scan);
bStop=false;
Thread1->Resume();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MuCL3Click(TObject *Sender)
{ // 测量方式->时间扫描
DisableMenuItems();
DrawBK();
if(Thread1!=NULL)
DeleteThread1();
CreatThread1();
Thread1->SetFun((ExecFun) To_Scan_T);
bStop=false;
Thread1->Resume();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MuCL4Click(TObject *Sender)
{ //测量方式->定点测量
DisableMenuItems();
if(Timer1->Enabled==false)
Timer1->Enabled=true;
fmDpoint->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MuPrintClick(TObject *Sender)
{//打印
if(ptc.m2==0)//没有数据就不能打印
FormPrntSetting->BTPrint->Enabled=false;
else
FormPrntSetting->BTPrint->Enabled=true;
FormPrntSetting->Show();//打印设置
//PrintDialog1->Execute();
}
//---------------------------------------------------------------------------
void TForm1::PrintDoc()
{ //
TPrinter *pPrinter=Printer();
TRect DRect,SRect;// 区域类型名
DRect.Top=0; DRect.Left=0;
DRect.Right=pPrinter->PageWidth;
DRect.Bottom=pPrinter->PageHeight;
SRect.Top=KUAN; SRect.Left=KUAN;
SRect.Right=Image1->Width-KUAN;
SRect.Bottom=Image1->Height-KUAN;
pPrinter->BeginDoc();// 准备开始打印
pPrinter->Canvas->CopyRect(DRect,Image1->Canvas,SRect);
pPrinter->EndDoc();// 开始打印
}
//---------------------------------------------------------------------------
void TForm1::DrawBK(void)
{ //画背景
TRect rs, rd;
//Image1->Canvas->Pen->Style=psDot;
wx0=JUKUAN; wy0=JUKUAN;
wx1=Image1->Width-JUKUAN;
wy1=Image1->Height-JUKUAN;
Image1->Canvas->Pen->Color=clBK;
rs.Left=0; rs.Top=0;
rs.Right=Image2->Width;
rs.Bottom=Image2->Height;
rd.Left=0; rd.Top=0;
rd.Right=Image1->Width;
rd.Bottom=Image1->Height;
Image1->Canvas->Pen->Style=psSolid;
Image1->Canvas->CopyRect(rd,Image2->Canvas,rs);
Image1->Canvas->Rectangle(KUAN,KUAN,Image1->Width-KUAN,Image1->Height-KUAN);
//画矩形框
Image1->Canvas->Rectangle(wx0,wy0-GELI,wx1,wy1+GELI+1);
//画三条虚线
Image1->Canvas->Pen->Style=psDot;
Image1->Canvas->MoveTo(wx0,wy0);
Image1->Canvas->LineTo(wx1,wy0);
Image1->Canvas->MoveTo(wx0,wy1);
Image1->Canvas->LineTo(wx1,wy1);
if(!bGrid)
{
Image1->Canvas->MoveTo(wx0,(wy1+wy0)/2);
Image1->Canvas->LineTo(wx1,(wy1+wy0)/2);
}
//Image1->Canvas->Pen->Style=psSolid;
//Dot;
//0414增加刻度虚线框
ShowGrid(0,0,bGrid);
//0414增加刻度虚线框
char cgs[20];
memset(cgs,0,sizeof(cgs));
int y1;
//画坐标值
char gs[80];
if(csd[0]!=3)
{
sprintf(gs,"%4.0f",wns);
Image1->Canvas->TextOut(wx0-15,wy1+15,gs);
sprintf(gs,"%4.0f",wne);
Image1->Canvas->TextOut(wx1-20,wy1+15,gs);
}
else
{
sprintf(gs,"%4.1f",wns);
Image1->Canvas->TextOut(wx0-15,wy1+15,gs);
sprintf(gs,"%4.1f",wne);
Image1->Canvas->TextOut(wx1-20,wy1+15,gs);
}
//Image1->Canvas->TextFlags=ETO_RTLREADING;//右对齐
switch(csd[1])
{
case 1:
sprintf(gs,"%3.2f",tnh);
Image1->Canvas->TextOut(wx0-38,wy0-5,gs);
sprintf(gs,"%3.2f",tnl);
Image1->Canvas->TextOut(wx0-38,wy1-5,gs);
break;
case 2:
sprintf(gs,"%1.4f",tnh);
Image1->Canvas->TextOut(wx0-38,wy0-5,gs);
sprintf(gs,"%1.4f",tnl);
Image1->Canvas->TextOut(wx0-38,wy1-5,gs);
break;
case 3:
sprintf(gs,"%4.1f",tnh);
Image1->Canvas->TextOut(wx0-38,wy0-5,gs);
sprintf(gs,"%4.1f",tnl);
Image1->Canvas->TextOut(wx0-38,wy1-5,gs);
}
}
//===========================================================================
void TForm1::DrawQX1(TCanvas *Canvas,
int Wx00, int Wx11, int Wy00, int Wy11,
int Wx0, int Wx1, int Wy0, int Wy1)
{ // 画光谱曲线
int n1,n2,x,y,i;
float t = 0.0;
int wx0, wx1, wy0, wy1;
wx0 = Wx0; wx1 = Wx1;
wy0 = Wy0; wy1 = Wy1;
if(ptc.m2==0) return; // 如果没有光谱数据就返回
if(csd[1]==3&&ptc.m1!=3) return;
if(csd[1]!=3&&ptc.m1==3) return;
if(ptc.m2==8&&csd[4]!=3) return;
if(wns>ptc.wns)
n1=(wns-ptc.wns)*(float)wnd0/(float)itl[ptc.interval];
else
n1=0;
if(wne<ptc.wne)
n2=(wne-ptc.wns)*(float)wnd0/(float)itl[ptc.interval];
else
n2=(ptc.wne-ptc.wns)*(float)wnd0/(float)itl[ptc.interval];
t=tc[n1];
switch(csd[1])
{
case 1:break;
case 2:t=toa(t);break;
case 3:break;
}
x=wx0+(wx1-wx0)/(wne-wns)*(-wns+(ptc.wns+(float)(n1*itl[ptc.interval])/(float)wnd0));
y=wy0+(float)(wy1-wy0)*(tnh-t)/(tnh-tnl);
if(x<wx0)
x=wx0;
else if(x>wx1)
x=wx1;
if(y>(wy1+5))
y=wy1+5;
else if(y<(wy0-5))
y=wy0-5;
Canvas->MoveTo(x,y);
Canvas->Pen->Style=psSolid;
Canvas->Pen->Color=clQX;
for(i=n1;i<=n2;i++)
{
t=tc[i];
switch(csd[1])
{
case 1:break;
case 2:t=toa(t);break;
case 3:break;
}
x=wx0+(wx1-wx0)/(wne-wns)*(-wns+(ptc.wns+(float)(i*itl[ptc.interval])/(float)wnd0));
y=wy0+(float)(wy1-wy0)*(tnh-t)/(tnh-tnl);
if(x<wx0)
x=wx0;
else if(x>wx1)
x=wx1;
if(y>wy1)
y=wy1;
else if(y<wy0)
y=wy0;
Canvas->LineTo(x,y);
}
/*
if(bReadData==true)//正在读取数据
{
IMTemp->Canvas->CopyRect(RSRect,Canvas,RDRect);//Get
DrawCross(Rx,Ry);
GetData(Rwi);
}
*/
}
//===========================================================================
void TForm1::DrawBK1(TCanvas *Canvas, int width, int height,
int &PWx00, int &PWx11, int &PWy00, int &PWy11,
int &PWx0, int &PWx1, int &PWy0, int &PWy1)
{ //画背景
TRect rs,rd;
int wx0, wx1;
int wy0, wy1;
int wx00, wx11, wy00, wy11;
char gs[80];
TSize sz;
int temp;
//清除背景
Canvas->Pen->Color=clBK;
Canvas->Rectangle(1, 1, width - 1, height - 1);
switch(csd[1])
{
case 1: sprintf(gs, "%1.3f", tnh); break;
case 2: sprintf(gs, "%1.5f", tnh); break;
case 3: sprintf(gs, "%1.2f", tnh); break;
}
sz = Canvas->TextExtent(gs);
wx00 = sz.cx;
sprintf(gs, "%1.3f", wne);
sz = Canvas->TextExtent(gs);
wx11 = width - sz.cx / 2;
sprintf(gs, "%1.2f", wns);
sz = Canvas->TextExtent(gs);
wy00 = sz.cy;
wy11 = height - sz.cy - sz.cy;
wy0 = wy00 + sz.cy;
wy1 = wy11 - sz.cy;
wx0 = wx00;
wx1 = wx11;
PWx00 = wx00; PWx11 = wx11;
PWy00 = wy00; PWy11 = wy11;
PWx0 = wx0; PWx1 = wx1;
PWy0 = wy0; PWy1 = wy1;
/*
rs.Left=0; rs.Top=0;
rs.Right=Image2->Width;
rs.Bottom=Image2->Height;
rd.Left=0; rd.Top=0;
rd.Right=Image1->Width;
rd.Bottom=Image1->Height;
Image1->Canvas->CopyRect(rd,Image2->Canvas,rs);
*/
//画矩形框
Canvas->Rectangle(wx00, wy00, wx11, wy11);
//画三条虚线
Canvas->Pen->Style=psDot;
Canvas->MoveTo(wx0,wy0);
Canvas->LineTo(wx1,wy0);
Canvas->MoveTo(wx0,wy1);
Canvas->LineTo(wx1,wy1);
Canvas->MoveTo(wx0,(wy1+wy0)/2);
Canvas->LineTo(wx1,(wy1+wy0)/2);
Canvas->Pen->Style=psSolid;
//画坐标刻度
int x,y;
for(int i=1;i<10;i++)
{
x=wx0 + i * (wx1 - wx0) / 10;
y=wy00;
Canvas->MoveTo(x, y);
Canvas->LineTo(x, y+3);
y = wy11;
Canvas->MoveTo(x,y);
Canvas->LineTo(x,y-3);
}
//画间隔点
for(int i=1;i<20;i++)
for(int j=1;j<10;j++)
{
x=wx0+(wx1-wx0)*i/20;
y=wy0+(wy1-wy0)*j/10;
Canvas->Pixels[x][y]=clBlack;
}
//画坐标值
sprintf(gs, "%4.1f", wns);
sz = Canvas->TextExtent(gs);
Canvas->TextOut(wx00 - sz.cx / 2, wy11 + 1, gs);
sprintf(gs, "%4.1f", wne);
sz = Canvas->TextExtent(gs);
Canvas->TextOut(wx11 - sz.cx / 2, wy11 + 1, gs);
//Image1->Canvas->TextFlags=ETO_RTLREADING;//右对齐
switch(csd[1])
{
case 1:
sprintf(gs, "%1.2f", tnh);
sz = Canvas->TextExtent(gs);
Canvas->TextOut(wx00 - sz.cx - 1, wy0 - sz.cy / 2, gs);
sprintf(gs, "%1.2f", tnl);
sz = Canvas->TextExtent(gs);
Canvas->TextOut(wx0 - sz.cx - 1, wy1 - sz.cy / 2, gs);
break;
case 2:
sprintf(gs,"%1.4f",tnh);
sz = Canvas->TextExtent(gs);
Canvas->TextOut(wx00 - sz.cx - 1, wy0 - sz.cy / 2, gs);
sprintf(gs,"%1.4f",tnl);
sz = Canvas->TextExtent(gs);
Canvas->TextOut(wx0 - sz.cx - 1, wy1 - sz.cy / 2, gs);
break;
case 3:
sprintf(gs,"%1.1f",tnh);
sz = Canvas->TextExtent(gs);
Canvas->TextOut(wx00 - sz.cx - 1, wy0 - sz.cy / 2, gs);
sprintf(gs,"%1.1f",tnl);
sz = Canvas->TextExtent(gs);
Canvas->TextOut(wx0 - sz.cx - 1, wy1 - sz.cy / 2, gs);
}
}
//---------------------------------------------------------------------------
void TForm1::ExchangData()
{ // 从参数设置窗体获取数据
if(ChanShu->bOK==false)
return;
wns=ChanShu->wnst; wne=ChanShu->wnet;
tnl=ChanShu->tnl2[ChanShu->Select1];
tnh=ChanShu->tnh2[ChanShu->Select1];
switch(ChanShu->Select1)
{ // 测量模式
case 1: csd[1]=1;break;
case 2: csd[1]=2;break;
case 3: csd[1]=3;break;
}
csd[0]=ChanShu->Select0; // 扫描间隔
csd[3]=ChanShu->Select2; // 扫描速率
csd[4]=ChanShu->Select3; // 扫描方式
csd[5]=ChanShu->csd5[csd[4]]; // 扫描次数
if(ChanShu->Select3!=3) // 不是时间扫描
{
PMuScanT->Enabled=false; //
MuCL3->Enabled=false; // 时间扫描不显示
MuCL3->AutoHotkeys=false;
Form1->Scan_Time->ShortCut=NULL;
PMuBaseScan->Enabled=true;
MuCL2->Enabled=true; // 基线扫描显示
PMuScan->Enabled=true;
PMuScan->AutoHotkeys=true;
Form1->Scan->ShortCut=VK_F1;
MuCL1->Enabled=true; // 光谱扫描显示
}
else
{
PMuScanT->Enabled=true;
MuCL3->Enabled=true; // 时间扫描显示
MuCL3->AutoHotkeys=true;
Form1->Scan_Time->ShortCut=VK_F3;
PMuBaseScan->Enabled=false;
MuCL2->Enabled=false; // 基线扫描不显示
PMuScan->Enabled=false;
PMuScan->AutoHotkeys=false;
Form1->Scan->ShortCut=NULL;
MuCL1->Enabled=false; // 光谱扫描不显示
}
csd[2]=ChanShu->csd2; // 工作光源
csd[8]=ChanShu->csd8; // 换灯波长
csd[9]=ChanShu->Select4; // 光谱带宽
csd[10]=ChanShu->csd10; // 负高压
csd[11]=ChanShu->csd11; // 增益
}
//---------------------------------------------------------------------------
void TForm1::SetData()
{ // 把数据传递给参数设置窗体
// 测量模式
switch(csd[1])
{
case 1: ChanShu->Select1=1;break;
case 2: ChanShu->Select1=2;break;
case 3: ChanShu->Select1=3;break;
}
ChanShu->tnl2[ChanShu->Select1]=tnl;
ChanShu->tnh2[ChanShu->Select1]=tnh;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -