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

📄 unitfrmlook.pas

📁 一个多元非线性回归分析源码以及其中的公式列表
💻 PAS
字号:
unit UnitfrmLook;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, ExtCtrls, Clipbrd, Buttons, UnitFP;

type
  TfrmLook = class(TForm)
    Panel1: TPanel;
    LabelX: TLabel;
    EditX: TEdit;
    ScrollBoxPic: TScrollBox;
    ImageView: TImage;
    PopupMenuPic: TPopupMenu;
    N17: TMenuItem;
    Label1: TLabel;
    EditY: TEdit;
    BitBtn1: TBitBtn;
    CheckBox1: TCheckBox;
    ComboBox1: TComboBox;
    CheckBox2: TCheckBox;
    procedure N17Click(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmLook: TfrmLook;

implementation

uses UnitAuto;

{$R *.dfm}

procedure TfrmLook.N17Click(Sender: TObject);
var
    MyFormat    : Word;
    AData       : THandle;
    APalette    : HPALETTE;
begin
    Clipboard.Clear;
    self.ImageView.Picture.Bitmap.SaveToClipBoardFormat(MyFormat,AData,APalette);
    ClipBoard.SetAsHandle(MyFormat,AData);
end;

procedure TfrmLook.FormResize(Sender: TObject);
begin
  ImageView.Visible:=false;
  try

    ScrollBoxPic.AutoScroll:=true;
    if ImageView.Width> ScrollBoxPic.Width then
        ImageView.Left:=-ScrollBoxPic.HorzScrollBar.Position
    else
        ImageView.Left:= (ScrollBoxPic.Width-ImageView.Width) div 2;
    if ImageView.height> ScrollBoxPic.height then
        ImageView.top:=-ScrollBoxPic.VertScrollBar.Position
    else
        ImageView.top:= (ScrollBoxPic.height-ImageView.height) div 2;
    
  except
    //
  end;
  ImageView.Visible:=true;
end;

procedure TfrmLook.BitBtn1Click(Sender: TObject);
var
  xMin,xMax,yMin,yMax      :extended; //值范围
  pxMin,pxMax,pyMin,pyMax  :integer; //屏幕范围
  i,iCount                 :integer;
  dIndexX,dIndexY          :string;
  dDatax,dDatay            :array of extended; //横轴
  X,Y                      :integer;
begin
  try
    self.ImageView.Width:=trunc(strtofloat(self.EditX.Text));
    self.ImageView.Height:=trunc(strtofloat(self.EditY.Text));
    self.ImageView.Picture.Bitmap.Width:=trunc(strtofloat(self.EditX.Text));
    self.ImageView.Picture.Bitmap.Height:=trunc(strtofloat(self.EditY.Text));
    FormResize(Sender);

    self.ImageView.Canvas.Pen.Width:=1;
    self.ImageView.Canvas.Brush.Color:=frmMain.ColorComboBox1.ColorValue;
    frmMain.ScrollBox1.Color:=frmMain.ColorComboBox1.ColorValue;
    self.ImageView.Canvas.FillRect(rect(0,0,self.ImageView.Picture.Width-1,self.ImageView.Picture.Height-1));

    pxMin:=self.ImageView.Picture.Bitmap.Width div 10;
    pxMax:=self.ImageView.Picture.Bitmap.Width*9 div 10;
    pyMin:=self.ImageView.Picture.Bitmap.Height*9 div 10;
    pyMax:=self.ImageView.Picture.Bitmap.Height div 10;

    dIndexX:=frmMain.ComboBox2.Text;
    dIndexY:=frmMain.ComboBox3.Text;

    ClientDataSetDataOld.Last;
    ClientDataSetDataOld.First;
    iCount:=ClientDataSetDataOld.RecordCount;
    if not (iCount<1) then
    begin
      setlength(dDatax,iCount);
      setlength(dDatay,iCount);
      frmMain.DBGridDataOld.DataSource.DataSet:=nil;
      i:=0;
      while not (ClientDataSetDataOld.Eof) do
      begin
        dDataX[i]:=ClientDataSetDataOld.fieldByName(dIndexX).AsFloat;
        dDataY[i]:=ClientDataSetDataOld.fieldByName(dIndexY).AsFloat;
        ClientDataSetDataOld.Next;
        i:=i+1;
      end;
      ClientDataSetDataOld.First;    
      frmMain.DBGridDataOld.DataSource.DataSet:=ClientDataSetDataOld;
    end
    else
    begin
      exit;
    end;

    xMin:=MinInArray(dDatax);
    xMax:=MaxInArray(dDatax);
    yMin:=MinInArray(dDatay);
    yMax:=MaxInArray(dDatay);
    if xMin=xMax then
    begin
      xMin:=xMin-1;
      xMax:=xMax+1;
    end;
    if yMin=yMax then
    begin
      yMin:=yMin-1;
      yMax:=yMax+1;
    end;

    PicxMin:=xMin;
    PicxMax:=xMax;
    PicyMin:=yMin;
    PicyMax:=yMax;

    for i:=high(dDatax) downto 0 do
    begin
      X:=trunc((dDatax[i]-xMin)/(xMax-xMin)*(PxMax-PxMin)+pxMin);
      y:=trunc((dDatay[i]-yMin)/(yMax-yMin)*(PyMax-PyMin)+pyMin);
      self.ImageView.Canvas.Pixels[X,Y]:=frmMain.ColorComboBox2.ColorValue;
      self.ImageView.Canvas.Pixels[X+1,Y]:=frmMain.ColorComboBox2.ColorValue;
      self.ImageView.Canvas.Pixels[X-1,Y]:=frmMain.ColorComboBox2.ColorValue;
      self.ImageView.Canvas.Pixels[X,Y+1]:=frmMain.ColorComboBox2.ColorValue;
      self.ImageView.Canvas.Pixels[X,Y-1]:=frmMain.ColorComboBox2.ColorValue;
    end;
  except
    //
  end;
end;

procedure TfrmLook.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=caFree;
end;

procedure TfrmLook.FormCreate(Sender: TObject);
begin
  BitBtn1Click(sender);
end;

end.

⌨️ 快捷键说明

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