📄 resultgraphic.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "ResultGraphic.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TTResultGraphic *TResultGraphic;
//---------------------------------------------------------------------------
__fastcall TTResultGraphic::TTResultGraphic(TComponent* Owner)
: TForm(Owner)
{
Scale=1;
}
//---------------------------------------------------------------------------
#include <jpeg.hpp>
void __fastcall TTResultGraphic::SaveClick(TObject *Sender)
{
AnsiString FileName;
if(SaveDialog->Execute())
{
FileName=SaveDialog->FileName;
FileName.Delete(FileName.Pos("."),FileName.Length());
if(SaveDialog->FilterIndex==1)
{
FileName+=(".bmp");
Image->Picture->SaveToFile(FileName);
}
else
{
TJPEGImage *jpg=new TJPEGImage();
jpg->Assign(Image->Picture->Bitmap);
jpg->SaveToFile(FileName+".jpg");
delete jpg;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TTResultGraphic::CancelClick(TObject *Sender)
{
if(Modal)
{
ModalResult=mrCancel;
}
else
{
Hide();
}
}
//---------------------------------------------------------------------------
void __fastcall TTResultGraphic::FormResize(TObject *Sender)
{
int x,y;
x=Width;
y=Height;
Cancel->Left=x-100;
Save->Left=Cancel->Left-100;
Xiao->Left=Save->Left-100;
Da->Left=Xiao->Left-100;
Cancel->Top=y-67;
Save->Top=Cancel->Top;
Xiao->Top=Save->Top;
Da->Top=Xiao->Top;
Back->Top=5;
Back->Left=5;
Back->Height=y-80;
Back->Width=x-17;
}
//---------------------------------------------------------------------------
void TTResultGraphic::Draw()
{
double S,TempDouble;
WellHead *TempHead,*CurrentHead;
WellUnit *CurrentWell,*Well;
int x,y,TempInt,Int;
TSize Size;
TPoint pos,FirstPoint,SecondPoint;
TColor Jing=clGreen,Zeng=clBlue,Zhuan=TColor(0x00ff00ff),Lian=clRed;
S=700/(x_max-x_min);
y=int((y_max-y_min)*S*Scale+130);
x=int((x_max-x_min)*S*Scale+110);
Image->Picture->Bitmap->Width=x;
Image->Picture->Bitmap->Height=y;
Image->Canvas->Pen->Color=clBlack;
Image->Canvas->Pen->Width=1;
Image->Canvas->Brush->Color=clWhite;
Image->Canvas->FillRect(TRect(0,0,x,y));
Image->Canvas->Rectangle(5,5,x-5,y-5);
Image->Canvas->Pen->Color=Jing;
Image->Canvas->Brush->Color=Jing;
Image->Canvas->Font->Color=Jing;
Image->Canvas->Rectangle(20,10,30,20);
Image->Canvas->Brush->Color=clWhite;
Size=Image->Canvas->TextExtent("油井");
Image->Canvas->TextOutA(40,15-Size.cy/2,"油井");
Image->Canvas->Pen->Color=Zeng;
Image->Canvas->Brush->Color=Zeng;
Image->Canvas->Font->Color=Zeng;
pos=Image->Canvas->PenPos;
Image->Canvas->Rectangle(pos.x+10,10,pos.x+20,20);
Size=Image->Canvas->TextExtent("增压点");
Image->Canvas->Brush->Color=clWhite;
Image->Canvas->TextOutA(pos.x+30,15-Size.cy/2,"增压点");
Image->Canvas->Pen->Color=Zhuan;
Image->Canvas->Brush->Color=Zhuan;
Image->Canvas->Font->Color=Zhuan;
pos=Image->Canvas->PenPos;
Image->Canvas->Rectangle(pos.x+10,10,pos.x+20,20);
Size=Image->Canvas->TextExtent("转油站");
Image->Canvas->Brush->Color=clWhite;
Image->Canvas->TextOutA(pos.x+30,15-Size.cy/2,"转油站");
Image->Canvas->Pen->Color=Lian;
Image->Canvas->Brush->Color=Lian;
Image->Canvas->Font->Color=Lian;
pos=Image->Canvas->PenPos;
Image->Canvas->Rectangle(pos.x+10,10,pos.x+20,20);
Size=Image->Canvas->TextExtent("联合站");
Image->Canvas->Brush->Color=clWhite;
Image->Canvas->TextOutA(pos.x+30,15-Size.cy/2,"联合站");
Image->Canvas->Pen->Color=clBlack;
Image->Canvas->Pen->Width=2;
//画管线
CurrentHead=Head->Next;
while(CurrentHead!=0)
{
TempHead=CurrentHead->Sub;
while(TempHead!=0)
{
TempDouble=TempHead->X;
FirstPoint.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=TempHead->Y;
FirstPoint.y=int((y_max-TempDouble)*S*Scale+75);
Well=TempHead->Well;
while(Well!=0)
{
TempDouble=Well->X;
SecondPoint.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=Well->Y;
SecondPoint.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->MoveTo(FirstPoint.x,FirstPoint.y);
Image->Canvas->LineTo(SecondPoint.x,SecondPoint.y);
}
TempDouble=CurrentHead->X;
SecondPoint.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=CurrentHead->Y;
SecondPoint.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->MoveTo(FirstPoint.x,FirstPoint.y);
Image->Canvas->LineTo(SecondPoint.x,SecondPoint.y);
TempHead=TempHead->Sub;
}
TempDouble=CurrentHead->X;
FirstPoint.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=CurrentHead->Y;
FirstPoint.y=int((y_max-TempDouble)*S*Scale+75);
Well=CurrentHead->Well;
while(Well!=0)
{
TempDouble=Well->X;
SecondPoint.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=Well->Y;
SecondPoint.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->MoveTo(FirstPoint.x,FirstPoint.y);
Image->Canvas->LineTo(SecondPoint.x,SecondPoint.y);
Well=Well->Next;
}
if(!CurrentHead->Fixed)
{
TempDouble=Head->X;
SecondPoint.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=Head->Y;
SecondPoint.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->MoveTo(FirstPoint.x,FirstPoint.y);
Image->Canvas->LineTo(SecondPoint.x,SecondPoint.y);
}
CurrentHead=CurrentHead->Next;
}
CurrentHead=Head->Sub;
if(CurrentHead!=0)
{
CurrentHead=CurrentHead->Next;
while(CurrentHead!=0)
{
TempHead=CurrentHead->Sub;
while(TempHead!=0)
{
TempDouble=TempHead->X;
FirstPoint.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=TempHead->Y;
FirstPoint.y=int((y_max-TempDouble)*S*Scale+75);
Well=TempHead->Well;
while(Well!=0)
{
TempDouble=Well->X;
SecondPoint.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=Well->Y;
SecondPoint.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->MoveTo(FirstPoint.x,FirstPoint.y);
Image->Canvas->LineTo(SecondPoint.x,SecondPoint.y);
}
TempDouble=CurrentHead->X;
SecondPoint.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=CurrentHead->Y;
SecondPoint.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->MoveTo(FirstPoint.x,FirstPoint.y);
Image->Canvas->LineTo(SecondPoint.x,SecondPoint.y);
TempHead=TempHead->Sub;
}
TempDouble=CurrentHead->X;
FirstPoint.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=CurrentHead->Y;
FirstPoint.y=int((y_max-TempDouble)*S*Scale+75);
Well=CurrentHead->Well;
while(Well!=0)
{
TempDouble=Well->X;
SecondPoint.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=Well->Y;
SecondPoint.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->MoveTo(FirstPoint.x,FirstPoint.y);
Image->Canvas->LineTo(SecondPoint.x,SecondPoint.y);
Well=Well->Next;
}
if(!CurrentHead->Fixed)
{
TempDouble=Head->Sub->X;
SecondPoint.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=Head->Sub->Y;
SecondPoint.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->MoveTo(FirstPoint.x,FirstPoint.y);
Image->Canvas->LineTo(SecondPoint.x,SecondPoint.y);
}
CurrentHead=CurrentHead->Next;
}
}
//画站点
CurrentHead=Head->Next;
while(CurrentHead!=0)
{
TempHead=CurrentHead->Sub;
while(TempHead!=0)
{
Well=TempHead->Well;
while(Well!=0)
{
Image->Canvas->Pen->Color=Jing;
Image->Canvas->Brush->Color=Jing;
Image->Canvas->Font->Color=Jing;
TempDouble=Well->X;
pos.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=Well->Y;
pos.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->Rectangle(pos.x-5,pos.y-5,pos.x+5,pos.y+5);
Image->Canvas->Brush->Color=clWhite;
Size=Image->Canvas->TextExtent(Well->No);
Image->Canvas->TextOutA(int(pos.x-Size.cx/2),pos.y-10-Size.cy,Well->No);
}
Image->Canvas->Pen->Color=Zeng;
Image->Canvas->Brush->Color=Zeng;
Image->Canvas->Font->Color=Zeng;
TempDouble=TempHead->X;
pos.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=TempHead->Y;
pos.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->Rectangle(pos.x-5,pos.y-5,pos.x+5,pos.y+5);
Image->Canvas->Brush->Color=clWhite;
Size=Image->Canvas->TextExtent(TempHead->No);
Image->Canvas->TextOutA(int(pos.x-Size.cx/2),pos.y-10-Size.cy,TempHead->No);
}
Well=CurrentHead->Well;
while(Well!=0)
{
Image->Canvas->Pen->Color=Jing;
Image->Canvas->Brush->Color=Jing;
Image->Canvas->Font->Color=Jing;
TempDouble=Well->X;
pos.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=Well->Y;
pos.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->Rectangle(pos.x-5,pos.y-5,pos.x+5,pos.y+5);
Image->Canvas->Brush->Color=clWhite;
Size=Image->Canvas->TextExtent(Well->No);
Image->Canvas->TextOutA(int(pos.x-Size.cx/2),pos.y-10-Size.cy,Well->No);
Well=Well->Next;
}
Image->Canvas->Pen->Color=Zhuan;
Image->Canvas->Brush->Color=Zhuan;
Image->Canvas->Font->Color=Zhuan;
TempDouble=CurrentHead->X;
pos.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=CurrentHead->Y;
pos.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->Rectangle(pos.x-5,pos.y-5,pos.x+5,pos.y+5);
Image->Canvas->Brush->Color=clWhite;
Size=Image->Canvas->TextExtent(CurrentHead->No);
Image->Canvas->TextOutA(int(pos.x-Size.cx/2),pos.y-10-Size.cy,CurrentHead->No);
CurrentHead=CurrentHead->Next;
}
CurrentHead=Head;
if(CurrentHead!=0)
{
Image->Canvas->Pen->Color=Lian;
Image->Canvas->Brush->Color=Lian;
Image->Canvas->Font->Color=Lian;
TempDouble=CurrentHead->X;
pos.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=CurrentHead->Y;
pos.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->Rectangle(pos.x-5,pos.y-5,pos.x+5,pos.y+5);
Image->Canvas->Brush->Color=clWhite;
Size=Image->Canvas->TextExtent(CurrentHead->No);
Image->Canvas->TextOutA(int(pos.x-Size.cx/2),pos.y-10-Size.cy,CurrentHead->No);
}
CurrentHead=Head->Sub;
if(CurrentHead!=0)
{
CurrentHead=CurrentHead->Next;
while(CurrentHead!=0)
{
TempHead=CurrentHead->Sub;
while(TempHead!=0)
{
Well=TempHead->Well;
while(Well!=0)
{
Image->Canvas->Pen->Color=Jing;
Image->Canvas->Brush->Color=Jing;
Image->Canvas->Font->Color=Jing;
TempDouble=Well->X;
pos.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=Well->Y;
pos.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->Rectangle(pos.x-5,pos.y-5,pos.x+5,pos.y+5);
Image->Canvas->Brush->Color=clWhite;
Size=Image->Canvas->TextExtent(Well->No);
Image->Canvas->TextOutA(int(pos.x-Size.cx/2),pos.y-10-Size.cy,Well->No);
}
Image->Canvas->Pen->Color=Zeng;
Image->Canvas->Brush->Color=Zeng;
Image->Canvas->Font->Color=Zeng;
TempDouble=TempHead->X;
pos.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=TempHead->Y;
pos.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->Rectangle(pos.x-5,pos.y-5,pos.x+5,pos.y+5);
Image->Canvas->Brush->Color=clWhite;
Size=Image->Canvas->TextExtent(TempHead->No);
Image->Canvas->TextOutA(int(pos.x-Size.cx/2),pos.y-10-Size.cy,TempHead->No);
}
Well=CurrentHead->Well;
while(Well!=0)
{
Image->Canvas->Pen->Color=Jing;
Image->Canvas->Brush->Color=Jing;
Image->Canvas->Font->Color=Jing;
TempDouble=Well->X;
pos.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=Well->Y;
pos.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->Rectangle(pos.x-5,pos.y-5,pos.x+5,pos.y+5);
Image->Canvas->Brush->Color=clWhite;
Size=Image->Canvas->TextExtent(Well->No);
Image->Canvas->TextOutA(int(pos.x-Size.cx/2),pos.y-10-Size.cy,Well->No);
Well=Well->Next;
}
Image->Canvas->Pen->Color=Zhuan;
Image->Canvas->Brush->Color=Zhuan;
Image->Canvas->Font->Color=Zhuan;
TempDouble=CurrentHead->X;
pos.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=CurrentHead->Y;
pos.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->Rectangle(pos.x-5,pos.y-5,pos.x+5,pos.y+5);
Image->Canvas->Brush->Color=clWhite;
Size=Image->Canvas->TextExtent(CurrentHead->No);
Image->Canvas->TextOutA(int(pos.x-Size.cx/2),pos.y-10-Size.cy,CurrentHead->No);
CurrentHead=CurrentHead->Next;
}
}
CurrentHead=Head->Sub;
if(CurrentHead!=0)
{
Image->Canvas->Pen->Color=Lian;
Image->Canvas->Brush->Color=Lian;
Image->Canvas->Font->Color=Lian;
TempDouble=CurrentHead->X;
pos.x=int((TempDouble-x_min)*S*Scale+55);
TempDouble=CurrentHead->Y;
pos.y=int((y_max-TempDouble)*S*Scale+75);
Image->Canvas->Rectangle(pos.x-5,pos.y-5,pos.x+5,pos.y+5);
Image->Canvas->Brush->Color=clWhite;
Size=Image->Canvas->TextExtent(CurrentHead->No);
Image->Canvas->TextOutA(int(pos.x-Size.cx/2),pos.y-10-Size.cy,CurrentHead->No);
}
}
void __fastcall TTResultGraphic::DaClick(TObject *Sender)
{
Scale*=1.2;
Draw();
}
//---------------------------------------------------------------------------
void __fastcall TTResultGraphic::XiaoClick(TObject *Sender)
{
Scale*=0.8;
Draw();
}
//---------------------------------------------------------------------------
void __fastcall TTResultGraphic::FormShow(TObject *Sender)
{
WellHead *TempHead,*CurrentHead,*SubHead;
Head=(WellHead*) new WellHead;
TFileStream *File;
AnsiString FileName,Pipe,Station;
switch(Selected)
{
case 0:
{
FileName="Nan.pos";
Pipe="pipe_nan";
Station="station_nan";
break;
}
case 1:
{
FileName="Bei.pos";
Pipe="pipe_bei";
Station="station_bei";
break;
}
case 2:
{
FileName="Dong.pos";
Pipe="pipe_dong";
Station="station_dong";
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -