77 lines
2.1 KiB
Plaintext
77 lines
2.1 KiB
Plaintext
unit umain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, ieview, ImageEnView, hyiedefs, hyieutils, iexBitmaps, iesettings,
|
|
iexLayers, iexRulers;
|
|
|
|
type
|
|
TForm1 = class(TForm)
|
|
ImageEnView1: TImageEnView;
|
|
Button1: TButton;
|
|
ImageEnView2: TImageEnView;
|
|
ImageEnView3: TImageEnView;
|
|
Label1: TLabel;
|
|
Label2: TLabel;
|
|
procedure Button1Click(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
{$R WindowsTheme.res}
|
|
|
|
|
|
procedure TForm1.Button1Click(Sender: TObject);
|
|
var
|
|
VertHist, HorizHist: pintegerarray; // from Delphi 4 VertHist and HorizHist can be dynamic arrays
|
|
VertHistHeight, HorizHistWidth, VertHistWidth, HorizHistHeight: integer;
|
|
i: integer;
|
|
begin
|
|
ImageEnView1.io.LoadFromFile(ImageEnView1.io.ExecuteOpenDialog('', '', false, 1, ''));
|
|
|
|
// histograms
|
|
VertHistWidth := ImageEnView3.ClientWidth;
|
|
VertHistHeight := ImageEnView1.IEBitmap.Height;
|
|
HorizHistWidth := ImageEnView1.IEBitmap.Width;
|
|
HorizHistHeight := ImageEnView2.ClientHeight;
|
|
getmem(VertHist, VertHistHeight * sizeof(integer));
|
|
getmem(HorizHist, HorizHistWidth * sizeof(integer));
|
|
ImageEnView1.proc.CalcDensityHistogram(VertHist, HorizHist, VertHistWidth, HorizHistHeight);
|
|
// horizontal
|
|
ImageEnView2.IEBitmap.Height := HorizHistHeight;
|
|
ImageEnView2.IEBitmap.Width := HorizHistWidth;
|
|
// vertical
|
|
ImageEnView3.IEBitmap.Height := VertHistHeight;
|
|
ImageEnView3.IEBitmap.Width := VertHistWidth;
|
|
// draw histograms
|
|
ImageEnView2.IEBitmap.Canvas.Pen.Color := clBlack;
|
|
ImageEnView3.IEBitmap.Canvas.Pen.Color := clBlack;
|
|
for i := 0 to HorizHistWidth - 1 do
|
|
begin
|
|
ImageEnView2.IEBitmap.Canvas.MoveTo(i, HorizHistHeight);
|
|
ImageEnView2.IEBitmap.Canvas.LineTo(i, HorizHistHeight - HorizHist[i]);
|
|
end;
|
|
for i := 0 to VertHistHeight - 1 do
|
|
begin
|
|
ImageEnView3.IEBitmap.Canvas.MoveTo(0, i);
|
|
ImageEnView3.IEBitmap.Canvas.LineTo(VertHist[i], i);
|
|
end;
|
|
ImageEnView2.Update;
|
|
ImageEnView3.Update;
|
|
//
|
|
freemem(VertHist);
|
|
freemem(HorizHist);
|
|
end;
|
|
|
|
end.
|