TImage - przesuwanie lub zakręcanie obrazka

0

Cześć,

Czy komponent TImage oferuje przesunięcie w wyświetlanym obrazku o x pixeli?
Czyli ładuje do TImage obrazek, i nie chcę aby jego wyświetlanie rozpoczęło się od lewej strony, tylko np od połowy szerokości komponentu timage.

Idąc dalej, jeżeli udało mi się przesunąć ładowanie obrazka, np od połowy, to chciałbym, aby to co "wyszło" poza komponent timage, pojawiło się od lewej strony komponentu.

Nie wiem czy w miarę zrozumiale to opisuje, więc może napiszę o co dokładnie mi chodzi.
Mam obrazek, który jest tak zbudowany w taki sposób, że jego prawa część przechodzi płynnie w lewą, tak że nie wiadomo gdzie jest łączenie.
To co chcę zrobić, to załadować ten obrazek do timage i móc ten obraz swobodnie przesuwać w prawo i lewo w tym komponencie timage - tak aby sam się ... "zawijał"

Mogę to uzyskać z jakiś gotowych funkcji czy muszę samemu to jakoś rozwiązać?

Jakieś propozycje i sugestie jakby można to zrobić?

0

nie oferuje tego - trzeba sobie samemu napisać - ze 3 linijki kodu to będzie

delphi help napisał(a)

Copies part of an image from another canvas into the canvas.

Delphi syntax:

procedure CopyRect(const Dest: TRect; Canvas: TCanvas; const Source: TRect);

C++ syntax:

void __fastcall CopyRect(const TRect &Dest, TCanvas* Canvas, const TRect &Source);

Description

Use CopyRect to transfer part of the image on another canvas to the image of the TCanvas object. Dest specifies the rectangle on the canvas where the source image will be copied. The Canvas parameter specifies the canvas with the source image. Source specifies a rectangle bounding the portion of the source canvas that will be copied.

The portion of the source canvas is copied using the mode specified by CopyMode.

0
procedure TForm1.Button1Click(Sender: TObject);  // button w lewo
begin
dec(ruch,10);
if ruch <= 0 then ruch:= 400;
image1.Canvas.Draw(0+ruch,0,bitmapa);    // obraz 400x300
image1.Canvas.Draw(-400+ruch,0,bitmapa);

end;

procedure TForm1.Button2Click(Sender: TObject);  // button w prawo
begin
inc(ruch,10);
if ruch >= 400 then ruch:= 0;
image1.Canvas.Draw(0+ruch,0,bitmapa);    // obraz 400x300
image1.Canvas.Draw(-400+ruch,0,bitmapa);
end;

;]

1 użytkowników online, w tym zalogowanych: 0, gości: 1