Scrollbox ın içinde alclient şeklinde resmim var ve bu resmi scrollbar
Kod: Tümünü seç
image1.Scale.X:=ScrollBar1.Value;
image1.Scale.y:=ScrollBar1.Value;
Program çalışıyor ve istenileni yapıyor ama akıcı şekilde olmuyor, Windows un resim görüntüleyicisi gibi daha akıcı yapmak için bir yöntem var mıdır? yada yazdığım koda nasıl bir düzenleme yaparsam bu akıcılığı sağlayabilirim ?
Teşekkürler.
Not: Yüksek çözünürlüklü fotoğraf kullandığım için boyut biraz büyüdü, bu linkten projeye bakabilirsiniz.
https://mega.co.nz/#!1UQwyLCb!mY0MTRcho ... cy6Qv8v8gw
Kod: Tümünü seç
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
FMX.Objects, FMX.Layouts, FMX.ListBox;
type
TScrollBox = class (FMX.Layouts.TScrollBox)
end;
TForm1 = class(TForm)
FramedScrollBox1: TFramedScrollBox;
ScrollBar1: TScrollBar;
Image1: TImage;
Rectangle1: TRectangle;
ScrollBox1: TScrollBox;
CheckBox1: TCheckBox;
ListBox1: TListBox;
ListBox2: TListBox;
procedure ScrollBar1Change(Sender: TObject);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Single);
procedure Image1DragOver(Sender: TObject; const Data: TDragObject;
const Point: TPointF; var Operation: TDragOperation);
procedure Image1DragEnd(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
koordinat: TPointF;
deger_AL:Boolean;
implementation
{$R *.fmx}
procedure TForm1.FormCreate(Sender: TObject);
begin
image1.DragMode:=TDragMode(1);
end;
procedure TForm1.Image1DragEnd(Sender: TObject);
begin
listbox1.Items.Add(floattostr( koordinat.X));
listbox2.Items.Add(floattostr( koordinat.y));
deger_AL:=true;
end;
procedure TForm1.Image1DragOver(Sender: TObject; const Data: TDragObject;
const Point: TPointF; var Operation: TDragOperation);
begin
Cursor:=crHandPoint;
listbox1.Items.Add(floattostr( koordinat.X));
listbox2.Items.Add(floattostr( koordinat.y));
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Single);
var
fark1,fark2:double;
sonsatir1,sonsatir2:integer;
begin
koordinat.X := X;
koordinat.Y := Y;
if deger_AL=true then
begin
listbox1.Items.Add(floattostr( koordinat.X));
listbox2.Items.Add(floattostr( koordinat.y));
deger_AL:=false;
sonsatir1:=listbox1.Count;
sonsatir2:=listbox1.Count;
fark1:= strtofloat(listbox1.Items[0])- strtofloat(listbox1.Items[sonsatir1-1]);
fark2:= strtofloat(listbox2.Items[0])- strtofloat(listbox2.Items[sonsatir2-1]);
//X yönünde
if abs(fark1) > abs(fark2) then
begin
if fark1>0 then FramedScrollBox1.ScrollTo(-500,0);
if fark1<0 then FramedScrollBox1.ScrollTo(500,0);
end else
//y yönünde
begin
if fark2>0 then FramedScrollBox1.ScrollTo(0,-500);
if fark2<0 then FramedScrollBox1.ScrollTo(0,500);
end;
listbox1.Items.Clear;
listbox2.Items.Clear;
end;
end;
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
image1.Scale.X:=ScrollBar1.Value;
image1.Scale.y:=ScrollBar1.Value;
end;
end.