BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/Other/PixelView/umain.pas

98 lines
2.2 KiB
Plaintext

unit umain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, ieview, imageenview, ComCtrls, StdCtrls, ExtCtrls, hyieutils, imageenproc, hyiedefs;
type
TMainForm = class(TForm)
ImageEnView1: TImageEnView;
Panel1: TPanel;
Label1: TLabel;
TrackBar1: TTrackBar;
Label2: TLabel;
Label3: TLabel;
Panel2: TShape;
Button1: TButton;
procedure TrackBar1Change(Sender: TObject);
procedure ImageEnView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ImageEnView1Paint(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
lx,ly:integer;
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
{$R WindowsTheme.res}
// Zoom
procedure TMainForm.TrackBar1Change(Sender: TObject);
begin
ImageEnView1.Zoom:=TrackBar1.Position;
end;
// Moving mouse
procedure TMainForm.ImageEnView1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
bitmapX,bitmapY:integer;
color:TRGB;
begin
with ImageEnView1 do
begin
bitmapX:=imin(imax(0,XScr2Bmp(X)),IEBitmap.Width-1);
bitmapY:=imin(imax(0,YScr2Bmp(Y)),IEBitmap.Height-1);
color:=IEBitmap.Pixels[bitmapX,bitmapY];
Label3.Caption := 'R: '+IntToStr(color.r)+', G: '+IntToStr(color.g)+', B: '+IntToStr(color.b);
Panel2.Brush.Color := TRGB2TColor( color );
end;
lx:=X;
ly:=Y;
ImageEnView1.invalidate;
end;
procedure TMainForm.ImageEnView1Paint(Sender: TObject);
var
bx,by:integer;
x1,y1,x2,y2:integer;
begin
bx:=ImageEnView1.XScr2Bmp(lx);
by:=ImageEnView1.YScr2Bmp(ly);
if (bx>=0) and (bx<ImageEnView1.IEBitmap.Width) and (by>=0) and (by<ImageEnView1.IEBitmap.Height) then
begin
x1:=ImageEnView1.XBmp2Scr(bx);
y1:=ImageEnView1.YBmp2Scr(by);
x2:=ImageEnView1.XBmp2Scr(bx+1);
y2:=ImageEnView1.YBmp2Scr(by+1);
with ImageEnView1.GetCanvas do
begin
Pen.Color:=clRed;
Pen.Style:=psSolid;
Brush.Style:=bsClear;
Rectangle(x1,y1,x2,y2);
end;
end;
end;
// Open Image
procedure TMainForm.Button1Click(Sender: TObject);
begin
with ImageEnView1.IO do
LoadFromFileAuto( ExecuteOpenDialog('','',true,0,'') );
end;
end.