Obraz w TImage

0

Cześć, powiem szczerze, że nawet nie wiem za bardzo pod jakim kątem mam szukać rozwiązania. Otóż mam TImage i TBitmap. Na TBitmap chcę narysować to, co jest w TImage. Niby proste. Problem polega na tym, że do TImage ładuje duży obraz i potem go zmniejszam. Na TBitmap chcę narysować zawartość TImage, więc robię:

bmp.draw(Image.Left, Image.Top, Image.Picture.Bitmap);

Problem polega na tym, że zamiast tego, co faktycznie widzę w TImage(pomniejszonego obrazu), rysuje mi się fragment oryginanego wielkiego obrazu.

To samo jest przy CopyRect, gdy kopiuję z Canvasa image'a. Czy ktoś wie, jak narysować na tej bitmapie to, co faktycznie widzę na Image, czyli obraz pomniejszony?

0

W unicie GraphicEx znajduje się procedura Stretch, która odpowiednio zmienia rozmiary bitmapy.

0

Funkcja StretchBlt Twoim przyjacielem.

A tak w ogóle to do przeskalowania bitmap najlepiej użyć filtra Lanczos, bo ładnie wygładza krawędzie.

Pzdr.
Marogo

0

ja do przeskalowywania uzywalem takiego kodu:

SetStretchBltMode(thumbnail.Canvas.Handle,  HALFTONE); 
      StretchBlt(thumbnail.Canvas.Handle,0,0,r.Right,r.Bottom,
                 image1.Canvas.Handle,0,0,image1.Width,image1.Height,
                 SRCCOPY);

dzieki SetStretchBltMode i HALFTONE krawedzie tez byly ladnie wygladzone.

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