Problem z kolorami...

0

Mamy maly problemik z kopiowaniem wyznaczonej czesci bitmapy z TImage (za pomoca funcji CopyRect) do drugiego komponentu TImage. Mianowicie wyglada to tak jakby funkcja obslugiwala jedynie 256 kolorow.
Jesli probuje skopiowac czesc bitmapy ktorej paleta skada sie z 24mln kolorow to wynikowy obraz jest bardzo ubogi w kolory i wyglada paleta zmienila sie na 256?

uzywam takie oto funckji do kopiowania czesci obszaru obrazka:

image2.Picture.Bitmap.Canvas.CopyRect(Rect(0,0,90,120), Form3.Image1.Picture.Bitmap.Canvas, Rect(startX,startY,endX,endY));

Prosze o pomoc moze istnieje jakas podobno funkcja ktora radzi sobie z wieksza ilosci kolorow?

Prosze o pomoc bo juz nie mam sily na to...

0

Ja użyłem czegoś takiego i umnie działa poprawnie , nie widze , żeby się kolory zmieniały.

VAR
Rectt: TRect;
BITMAP:TBITMAP;
begin
Rectt := Rect(10,10,200,200);
Bitmap := IMAGE1.Picture.Bitmap;
image2.Canvas.CopyRect(RECTT,Bitmap.Canvas,RECTT);

// działa w ten sposób, że pobiera próbke obrazu z komponentu IMAGE1
//i próbke wstawia do komponentu IMAGE2

Problem masz pewnie dlatego, że w instrukcji CopyRect(a,b,c) a i c powinny byc takie same...Jesli ktorys jest inny to wówczas przekształca troche obraz i stąd te braki w kolorach.

0

i może zamiast Form3.Image1.Picture.Bitmap.Canvas lepiej Form3.Image1.Canvas...

0

Watson: Masz racje faktycznie wielkosc prostokata a i c powinny byc takie same bo inaczej obraz ulega strasznej deformacji kolorow... Wiec bardzo sluszna uwaga, dzieki.

Jendak co zrobic zeby mozna bylo pomniejszyc wybrana czesc reprezentowana wlasnie przez prostokat c tak aby obraz nie byl az tak brzydki i zdeformowany?
Chcialbym wybrana (wycieta) czesc zapisac potem do pliku ale w takim jego stanie jest to bez sensu.
Pomocy ....

Moze ktos umie pomoc?

Bede dozgonnie wdzieczny :)

0

Może BitBlt()?

0

Może BitBlt()?

Moglbys rozwinac troche mysl?
To jest jakas metoda z klasy TImage?
Nie znalazlem nic w helpie o tej funckcji.

Dziekuje za kazda wskazowke...

0

Możesz spróbować sie jeszcze pobawić
instrukcją jpeg.scale, ale dokładnie jak to działa to nie wiem, może się przyda.

0

Może BitBlt()?

Moglbys rozwinac troche mysl?
To jest jakas metoda z klasy TImage?
Nie znalazlem nic w helpie o tej funckcji.

Dziekuje za kazda wskazowke...

To funkcja GDI, więc info powinno być w helpie do Win32 API. Nie mam go w tej chwili, więc ciężko mi dużo powiedzieć. Ale metoda StretchDraw() znana z Delphi, to obudowa właśnie BitBlt().

0

Scale nie daje zadnego efektu.
Polowicznie zaltwilem problem korzystajac z komponentu do robienia thumbow ktory znalazlem na Torrym.

Pobawie sie jeszcze z tym WinApi moze tam znajde cos ciekawego.

Gdyby ktos jednak mial jeszcze jakies pomysly chetnie wyslucham :)

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