You've already forked lazarus-ccr
161 lines
4.6 KiB
ObjectPascal
161 lines
4.6 KiB
ObjectPascal
![]() |
unit main;
|
||
|
|
||
|
{$mode objfpc}{$H+}
|
||
|
|
||
|
interface
|
||
|
|
||
|
uses
|
||
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,
|
||
|
ComCtrls, JvPicClip;
|
||
|
|
||
|
type
|
||
|
|
||
|
{ TForm1 }
|
||
|
|
||
|
TForm1 = class(TForm)
|
||
|
CombinedImage: TImage;
|
||
|
Label1: TLabel;
|
||
|
SplitImage: TImage;
|
||
|
JvPicClip1: TJvPicClip;
|
||
|
Trackbar: TTrackBar;
|
||
|
procedure CombinedImageMouseDown(Sender: TObject; Button: TMouseButton;
|
||
|
Shift: TShiftState; X, Y: Integer);
|
||
|
procedure FormCreate(Sender: TObject);
|
||
|
procedure TrackbarChange(Sender: TObject);
|
||
|
private
|
||
|
procedure CreateCombinedImage(ABitmap: TBitmap;
|
||
|
out ANumCols, ANumRows: Integer);
|
||
|
|
||
|
public
|
||
|
|
||
|
end;
|
||
|
|
||
|
var
|
||
|
Form1: TForm1;
|
||
|
|
||
|
implementation
|
||
|
|
||
|
{$R *.lfm}
|
||
|
|
||
|
procedure TForm1.FormCreate(Sender: TObject);
|
||
|
var
|
||
|
bmp: TBitmap;
|
||
|
nCols, nRows: Integer;
|
||
|
begin
|
||
|
bmp := TBitmap.Create;
|
||
|
try
|
||
|
CreateCombinedImage(bmp, nCols, nRows);
|
||
|
|
||
|
// Image for combined bitmap
|
||
|
CombinedImage.Width := bmp.Width;
|
||
|
CombinedImage.Height := bmp.Height;
|
||
|
CombinedImage.Picture.Assign(bmp);
|
||
|
|
||
|
// Image for separated bitmaps
|
||
|
SplitImage.Width := bmp.Width div nCols;
|
||
|
SplitImage.Height := bmp.Height div nRows;
|
||
|
|
||
|
JvPicClip1.Picture := CombinedImage.Picture;
|
||
|
JvPicClip1.Cols := nCols;
|
||
|
JvPicClip1.Rows := nRows;
|
||
|
|
||
|
Trackbar.Min := 0;
|
||
|
Trackbar.Max := nCols * nRows - 1;
|
||
|
Trackbar.Position := 0;
|
||
|
|
||
|
TrackbarChange(nil);
|
||
|
finally
|
||
|
bmp.Free;
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
procedure TForm1.CombinedImageMouseDown(Sender: TObject; Button: TMouseButton;
|
||
|
Shift: TShiftState; X, Y: Integer);
|
||
|
var
|
||
|
r, c: Integer;
|
||
|
begin
|
||
|
c := X div SplitImage.Width;
|
||
|
r := Y div SplitImage.Height;
|
||
|
Trackbar.Position := JvPicClip1.GetIndex(c, r);
|
||
|
end;
|
||
|
|
||
|
procedure TForm1.TrackbarChange(Sender: TObject);
|
||
|
begin
|
||
|
SplitImage.Picture.Assign(JvPicClip1.GraphicCell[Trackbar.Position]);
|
||
|
Label1.Caption := 'Index ' + IntToStr(Trackbar.Position);
|
||
|
end;
|
||
|
|
||
|
procedure TForm1.CreateCombinedImage(ABitmap: TBitmap;
|
||
|
out ANumCols, ANumRows: Integer);
|
||
|
const
|
||
|
W = 24;
|
||
|
H = 24;
|
||
|
var
|
||
|
pic: TPicture;
|
||
|
c, r, i: Integer;
|
||
|
L: TStrings;
|
||
|
begin
|
||
|
L := TStringList.Create;
|
||
|
try
|
||
|
L.Add('../design/JvMM/images/tjvbmpanimator.bmp'); //0
|
||
|
L.Add('../design/JvMM/images/tjvfullcoloraxiscombo.bmp');
|
||
|
L.Add('../design/JvMM/images/tjvfullcolorcircle.bmp');
|
||
|
L.Add('../design/JvMM/images/tjvfullcolorcircledialog.bmp');
|
||
|
L.Add('../design/JvMM/images/tjvfullcolorgroup.bmp');
|
||
|
L.Add('../design/JvMM/images/tjvfullcolorlabel.bmp');
|
||
|
L.Add('../design/JvMM/images/tjvfullcolorpanel.bmp');
|
||
|
L.Add('../design/JvMM/images/tjvfullcolorspacecombo.bmp');
|
||
|
L.Add('../design/JvMM/images/tjvfullcolortrackbar.bmp');
|
||
|
L.Add('../design/JvMM/images/tjvgradient.bmp');
|
||
|
L.Add('../design/JvMM/images/tjvgradientheaderpanel.bmp'); // 10
|
||
|
L.Add('../design/JvMM/images/tjvid3v2.bmp');
|
||
|
L.Add('../design/JvMM/images/tjvpicclip.bmp');
|
||
|
L.Add('../design/JvMM/images/tjvspecialprogress.bmp');
|
||
|
L.Add('../design/JvHMI/images/tjvdialbutton.bmp');
|
||
|
L.Add('../design/JvHMI/images/tjvled.bmp');
|
||
|
L.Add('../design/JvDB/images/tjvdbcalcedit.bmp');
|
||
|
L.Add('../design/JvDB/images/tjvdbhtlabel.bmp');
|
||
|
L.Add('../design/JvDB/images/tjvdbsearchcombobox.bmp');
|
||
|
L.Add('../design/JvDB/images/tjvdbsearchedit.bmp');
|
||
|
L.Add('../design/JvDB/images/tjvdbtreeview.bmp'); // 20
|
||
|
L.Add('../design/JvCustomControls/images/tjvimagelistviewer.png');
|
||
|
L.Add('../design/JvCustomControls/images/tjvimagesviewer.png');
|
||
|
L.Add('../design/JvCustomControls/images/tjvmoderntabbarpainter.bmp');
|
||
|
L.Add('../design/JvCustomControls/images/tjvoutlookbar.png');
|
||
|
L.Add('../design/JvCustomControls/images/tjvownerdrawviewer.png');
|
||
|
L.Add('../design/JvCustomControls/images/tjvtabbar.bmp');
|
||
|
L.Add('../design/JvCustomControls/images/tjvthumbimage.png');
|
||
|
L.Add('../design/JvCustomControls/images/tjvthumbnail.png');
|
||
|
L.Add('../design/JvCustomControls/images/tjvthumbview.png');
|
||
|
L.Add('../design/JvCustomControls/images/tjvtimeline.png'); // 30
|
||
|
L.Add('../design/JvCustomControls/images/tjvtmtimeline.png');
|
||
|
L.Add('../design/JvCustomControls/images/tjvvalidateedit.png'); // 32
|
||
|
ANumCols := 8;
|
||
|
ANumRows := 4;
|
||
|
ABitmap.SetSize(ANumCols * W, ANumRows * H);
|
||
|
ABitmap.Canvas.Brush.Color := clWhite;
|
||
|
Abitmap.Canvas.FillRect(0, 0, ABitmap.Width, ABitmap.Height);
|
||
|
c := 0;
|
||
|
r := 0;
|
||
|
pic := TPicture.Create;
|
||
|
try
|
||
|
for i:=0 to L.Count-1 do begin
|
||
|
pic.LoadFromFile(L[i]);
|
||
|
ABitmap.Canvas.Draw(c * W, r * H, pic.Bitmap);
|
||
|
inc(c);
|
||
|
if c = ANumCols then begin
|
||
|
c := 0;
|
||
|
inc(r);
|
||
|
end;
|
||
|
end;
|
||
|
finally
|
||
|
pic.Free;
|
||
|
end;
|
||
|
finally
|
||
|
L.Free;
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
end.
|
||
|
|