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

📄 unit1.cpp

📁 一个医学的软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            MultiImage=false;
            //ForStand=1;

            Form1->N13->Caption="叠加波形";
            Form1->N3->Enabled=false;
            Form1->suiComboBox1->Visible=false;
            Form1->N9->Caption="显示坐标系";
            Form1->N10->Caption="显示波形参数";
            Form1->N13->Enabled=false;
            Form1->Image1->Picture=NULL;
            Form1->N30->Enabled=false;
            Form1->N31->Caption="单色叠加";
            Form1->N31->Enabled=false;
            Form1->N32->Enabled=false;
            Form4->suiStringGrid1->RowCount=1;
            LineColorful=true;
            Form1->ToolButton6->Enabled=false;
            Form1->ToolButton7->Enabled=false;
            Form1->ToolButton9->Enabled=false;
            Form1->ToolButton10->Enabled=false;
            Form1->suiForm1->Caption="波形处理工具";

        }
    }
     else
     {
        if(Application->MessageBox("开始叠加波形", "Message", MB_YESNO)==IDYES)
        {
            if(Dataable==true)
            {
                Dataable=false;
                Form1->Button1->Click();
            }

            if(Saveable==true)
                Form1->S1->Click();

            CurColor=clWhite;
            Form1->Button1->Click();

            //temp_path=Form1->MyPath+"\\MyTempImage.bmp";
            //creat(temp_path.c_str(),S_IREAD | S_IWRITE );
            temp_path="c:\\MyTempImage.bmp";
            if(FileExists("c:\\MyTempImage.bmp")==false)//如果没有。bmp就创建
                creat("c:\\MyTempImage.bmp",S_IREAD | S_IWRITE );
            Form1->Image1->Picture->SaveToFile(temp_path);
            CurColor=clBlack;
            Form1->Button1->Click();
            Form1->N13->Caption="单波形显示";
            Standandx=trial_dis.time.scale;
            Standandy=trial_dis.trial[0].scale;
            //强行记录当前的比例尺
            GridDisplay("Black");
            MultiImage=true;
            Editable=false;
            Measure=0;
            Dataable=false;
            Pointable=false;
            Coordinate=false;
            Form1->Image1->Cursor=crDefault;
            CrossCursor=false;
            OpenFiled=false;
            //Saveable=true;
            Form1->N31->Enabled=true;
            Form1->N32->Enabled=true;
            Form1->ToolButton3->Enabled=false;
            Form1->ToolButton4->Enabled=false;
            /*
            Form1->ToolButton6->Enabled=false;
            Form1->ToolButton7->Enabled=false;
            Form1->ToolButton9->Enabled=false;
            Form1->ToolButton10->Enabled=false;
            */
            Form1->ToolButton12->Enabled=false;
            Form1->ToolButton13->Enabled=false;
            Form1->ToolButton15->Enabled=false;
            Form1->ToolButton16->Enabled=false;

            //文件下
            Form1->S1->Enabled=false;
            Form1->I1->Enabled=true;
            Form1->N3->Enabled=true;
            Form1->N28->Enabled=false;
            //编辑下
            Form1->N7->Enabled=false;
            Form1->N8->Enabled=false;
            Form1->N26->Enabled=false;
            Form1->N9->Enabled=false;
            Form1->N10->Enabled=false;
            //测量下
            Form1->N17->Enabled=false;
            Form1->N22->Enabled=false;
            Form1->N24->Enabled=false;
            Form1->N27->Enabled=false;
            //帮助下
            Form1->N15->Enabled=false;
            Form1->N30->Enabled=true;

        }
     }
     //Form1->Image1->Picture=NULL;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    //int i,j;
    struct data_dis *dis;
    short unsigned *buff;
	short int i0,x0,y,num;
	register short int i,x;
	short unsigned xleng,xdata;
	float xf;
	struct axis *xdis,*ydis;

    dis=&trial_dis;
    xdis=&(dis->time);
    ydis=&(dis->trial[0]);
    num=dis->stim_num;
    xleng=(dis->time).leng;
	xdata=trial->stim_data;
    //dis->time.scale=trial->stim_data/dis->time.leng;
    //应该是
    xf=dis->time.scale;
    buff=(trial->in_data_buff)[num];


    if(MultiImage==false)  //改变多图单图状态
    {
        Form1->Image1->Picture=NULL;
        Form1->Image1->Canvas->Pen->Color = clBlack;
    }
    else
    {
        Image1->Picture->LoadFromFile("c:\\MyTempImage.bmp");
        Form1->Image1->Canvas->Pen->Color=CurColor;
        if(OpenFiled==true)//打开一个文件才进行修改
        {
            switch(random(6)+1)
            {
                case 1:
                    Form1->Image1->Canvas->Pen->Color = clRed;
                    GridDisplay("Red");
                    break;
                case 2:
                    Form1->Image1->Canvas->Pen->Color = clBlue;
                    GridDisplay("Blue");
                    break;
                case 3:
                    Form1->Image1->Canvas->Pen->Color = clGreen;
                    GridDisplay("Green");
                    break;
                case 4:
                    Form1->Image1->Canvas->Pen->Color = clDkGray;
                    GridDisplay("Gray");
                    break;
                case 5:
                    Form1->Image1->Canvas->Pen->Color = clYellow;
                    GridDisplay("Yellow");
                    break;
                case 6:
                    Form1->Image1->Canvas->Pen->Color = clPurple;
                    GridDisplay("Purple");
                    break;
                default:
                    Form1->Image1->Canvas->Pen->Color = clBlack;
            }
            OpenFiled=false;
            CurColor=Form1->Image1->Canvas->Pen->Color;
        }
        /*
        Form1->ToolButton4->Enabled=false;
        Form1->ToolButton6->Enabled=false;
        Form1->ToolButton7->Enabled=false;
        Form1->ToolButton9->Enabled=false;
        Form1->ToolButton10->Enabled=false;
        Form1->ToolButton12->Enabled=false;
        Form1->ToolButton13->Enabled=false;
        Form1->ToolButton15->Enabled=false;
        Form1->ToolButton16->Enabled=false;
        */
    }

    if(Coordinate==true){    //坐标系显示切换
        Form1->Image1->Canvas->MoveTo(Image1->Left+1,(dis->trial[0]).off);
        Form1->Image1->Canvas->LineTo(Image1->Left+Image1->Width-1,(dis->trial[0]).off);
        draw_trial_axis_each(trial,&trial_dis,-1);
        draw_trial_axis_each(trial,&trial_dis,0);
        //draw_trial_axis_each(trial,&trial_dis,1);

        }
    if(Measure>3) //显示APD的辅助线
    {
        Image1->Canvas->Pen->Color=clRed;
        switch(Measure-1)
        {
            case 3:
                Image1->Canvas->MoveTo(Image1->Left+5,int(0.2*ybottom+0.8*ytop));
                Image1->Canvas->LineTo(Image1->Width-5,int(0.2*ybottom+0.8*ytop));
                Image1->Canvas->TextOutA(Image1->Width/2,int(0.2*ybottom+0.8*ytop)-10,
                    "APD20");
                break;
            case 4:
                Image1->Canvas->MoveTo(Image1->Left+5,int(0.5*ybottom+0.5*ytop));
                Image1->Canvas->LineTo(Image1->Width-5,int(0.5*ybottom+0.5*ytop));
                Image1->Canvas->TextOutA(Image1->Width/2,int(0.5*ybottom+0.5*ytop)-10,
                    "APD50");
                break;
            case 5:
                Image1->Canvas->MoveTo(Image1->Left+5,int(0.9*ybottom+0.1*ytop));
                Image1->Canvas->LineTo(Image1->Width-5,int(0.9*ybottom+0.1*ytop));
                Image1->Canvas->TextOutA(Image1->Width/2,int(0.9*ybottom+0.1*ytop)-10,
                    "APD90");
                break;
            default:
                break;
        }
    }
    //座标系



    if(MultiImage==true)
    {
        xf=Standandx;
        ydis->scale=Standandy;
        if(LineColorful==false)
            Image1->Canvas->Pen->Color=clBlack;

    }
    x0=2;
	i0=time_scrntopoint(xdis,x0);
	if(i0<2){
		i0=2;
		i=i0;  //add by cao
		x0=time_pointtoscrn(xdis,i);
	}
	x=x0;
	i=i0;


	y=ad_memtoscrn(ydis,buff[i]);
	Form1->Image1->Canvas->MoveTo(x,y);
    if(MultiImage==false)
        Image1->Canvas->Pen->Color=clBlack;
    if(MultiImage==false&&CurColor==clWhite)
        Image1->Canvas->Pen->Color=clWhite;
    while(x<xleng&&i<xdata){
        y=ad_memtoscrn(ydis,buff[i]);
        Form1->Image1->Canvas->LineTo(x,y);
        x++;
        i=(x-x0)*xf;
        i+=i0;
    }

    Form1->Button3->Click();

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    char state_buff[16];
	float fvmax;
	short int apd,rp,apa,fc;
	short int x0,y0,num;

    if(Dataable==true){
        num=trial_dis.stim_num;
        //以后是否由系统计算的转换处
        if(MeasureKind==true)
            count_ap_fc_param(trial,num);
        else
            count_ap_part_param(trial,num);
        Form1->Image1->Canvas->Font=Form1->Font;
        fvmax=trial_ad_memtovalue(trial,trial->ap_param[num].vmax+broad_ad_zero,0);
        fvmax=fvmax*1000.0/trial->sample_inter;
        Form1->Image1->Canvas->TextOutA(30,280,"Vmax="+AnsiString(int(fvmax)));
        rp=(int)trial_ad_memtovalue(trial,trial->ap_param[num].rp+broad_ad_zero,0);
        Form1->Image1->Canvas->TextOutA(110,280,"RP="+AnsiString(rp));
        apa=(int)trial_ad_memtovalue(trial,trial->ap_param[num].apa+broad_ad_zero,0);
        Form1->Image1->Canvas->TextOutA(190,280,"OS="+AnsiString(apa-rp));
        Form1->Image1->Canvas->TextOutA(270,280,"APA="+AnsiString(apa));
        apd=trial_time_pointtovalue(trial,trial->ap_param[num].apd20);
        Form1->Image1->Canvas->TextOutA(30,310,"APD20="+AnsiString(apd));
        apd=trial_time_pointtovalue(trial,trial->ap_param[num].apd50);
        Form1->Image1->Canvas->TextOutA(110,310,"APD50="+AnsiString(apd));
        apd=trial_time_pointtovalue(trial,trial->ap_param[num].apd90);
        Form1->Image1->Canvas->TextOutA(190,310,"APD90="+AnsiString(apd));
        fc=(short int)trial_ad_memtovalue(trial,trial->ap_param[num].fc+broad_ad_zero,1);
        Form1->Image1->Canvas->TextOutA(270,310,"FC="+AnsiString(fc));
    }

}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormResize(TObject *Sender)
{
    TControl* C;
    int CC=ControlCount;
    for (int i=0; i<CC; i++)
    {
        C=Controls[i];
        C->Left=C->Left*Width/WIDTH;
        C->Width=C->Width*Width/WIDTH;
        C->Top=C->Top*Height/HEIGHT;
        C->Height=C->Height*Height/HEIGHT;
    }
    HEIGHT=Height;
    WIDTH=Width;
    if(pf!=NULL)
        Form1->Button1->Click();
}
//---------------------------------------------------------------------------
int TForm1::ad_scrntomem(struct axis *dis,int scrn)
{
	//unsigned int mem;
    int mem;
	float tmp;
	tmp=dis->off-scrn;
	mem=tmp*dis->scale;
	mem+=broad_ad_zero;
	return mem;
}
//--------------------------------------------------------------------------
/***********************************************************************
Count the trial parameter
***********************************************************************/

void TForm1::count_ap_fc_param(struct trialparam *data,short int cnum)
{
	unsigned short *buff,*buff_fc;
	int ios,delta,os,num,fcmax,fcmin,vmaxlim,fclim;
	int apa20,apa50,apa90;
	register int val,i;
	struct apparam *ap;


	buff=data->in_data_buff[cnum];
	buff_fc=data->fc_data_buff[cnum];
	ap=&(data->ap_param[cnum]);
	num=data->stim_data;
	vmaxlim=trial_ad_valuetomem(data,300.0*data->sample_inter/1000.0,0)-0x800;
	fclim=trial_ad_valuetomem(data,10,1)-0x800;
	delta=0;
	ap->vmax=0;
	ap->apa=0;
	ap->apd20=0;
	ap->apd50=0;
	ap->apd90=0;
	apa20=0;
	apa50=0;
	apa90=0;
	fcmax=fcmin=(int)buff_fc[4];
	ap->rp=0;
	for(i=num-10;i<num;i++)
	{
		val=(int)buff[i];
		ap->rp+=val;
	}
	ap->rp/=10;
	os=ap->rp;
	ios=num-1;

	for(i=4;i<num;i++)
	{
		val=(int)buff_fc[i];
		if(abs(val-(int)buff_fc[i-1])<fclim){
			if((int)buff_fc[i]>fcmax)
				fcmax=(int)buff_fc[i];
			if((int)buff_fc[i]<fcmin)
				fcmin=(int)buff_fc[i];
		}

		val=(int)buff[i];
		if(val<ap->rp)
			continue;

		delta=val-(int)buff[i-1];
		if(delta>vmaxlim)

⌨️ 快捷键说明

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