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

📄 resultgraphic.cpp

📁 石油公司网管系统优化系统软件源码,很有价值的.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#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 + -