Wycinanie obrazka z drugiego obrazka

0

Mam taki problem, potrzebuje z pliku graficznego wyciąć kwadrat o danej wysokości i szerokości i położeniu, np. :

Left := 10;
Top := 10;
Width := 100;
Height := 100;

do zmiennej TBitmap (lub jakiejś innej graficznej) a następnie wyświetlenie tego wyciętego kwadratu np. na Formie.
Tak abym mógł w jednym pliku graficznym trzymać wiele kawałków obrazków.
Szukałem na googlach i nie potrafiłem tego znaleźć, jeśli ktoś znalazł lub potrafi mi pomóc to proszę o odpowiedz lub podanie linka.

0

Dostęp do pikseli masz przez:

TBitmap.Canvas.Pixels[x, y]

wieć w ten sposób możesz skopiować sobie do pustego TBitmap wybrany fragment.

A jak chcesz łatwo coś namalować to użyj PaitBox. Jak nie chcesz tak, a bezpośrednio na formie to musisz skorzystać z WinAPi, przechwycić kontekst itd. etc...


Opolski Portal Programistyczny
http://programwanie.opole.pl

0
protechnologia.pl napisał(a)

Dostęp do pikseli masz przez:

TBitmap.Canvas.Pixels[x, y]

wieć w ten sposób możesz skopiować sobie do pustego TBitmap wybrany fragment.
To by raczej było małe nieporozumienie kopiowanie pixel po pixelu...

endriuh28 napisał(a)

Szukałem na googlach i nie potrafiłem tego znaleźć, jeśli ktoś znalazł lub potrafi mi pomóc to proszę o odpowiedz lub podanie linka.
Nie szukałeś w google...

Gdybyś szukał, to byś znalazł np. http://www.delphitricks.com/source-code/graphic/copy_part_of_one_image_to_another.html

Copy part of one image to another

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  if OpenDialog1.Execute then 
    Image1.Picture.LoadFromFile(OpenDialog1.FileName); 
end; 


procedure TForm1.Button2Click(Sender: TObject); 
begin 
  Image2.Canvas.CopyRect( 
    Rect(0,0,Image2.Width,Image2.Height), 
    Image1.Canvas, 
    Rect( 
      0, 
      0, 
      Image1.Picture.Width-50, 
      Image1.Picture.Height-50)); 
end;
0

Dziękuję bardzo.
Ja zrobiłem tak:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Image2.Canvas.CopyRect(
  Rect(0,0,100,100),
  Image1.Canvas,
  Rect(0,0,100,100));
end;

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