Wyswietlanie przetworzonej bitmapy w komponencie

0

Cześć,
pracuje ostatnio nad tym żeby fajnie zrobić komunikaty dla użytkownika mojej aplikacji. Wymyśliłem sobie, że zrobie screen shota okna aplikacji, przeciemnie go/rozmyje (cokolwiek) i wyswietle jako tlo dla komunikatu.

Wszystko jest super, problem jednak w tym, że przyciemniony screen kiedy wrzucam go na komponent TImage wyswietla sie w nie zmienionej formie. Przykład:

 vbmp := TBitmap.Create;

  CaptureScreen(vbmp);

//tutaj juz ladnie siedzi screen aktywnego okna aplikacji w zmiennej vbmp

  {--przyciemniamy--}
    Amount:=95;
    for V:=0 to vBmp.Height-1 do begin
    WSK:=vBmp.ScanLine[V];
    for H:=0 to vBmp.Width*3-1 do
    begin
    Wsk^:=IntToByte(Wsk^-(Wsk^*Amount)div 255);
    inc(Wsk);
    end;
    end;
  {---}       

//teraz kiedy zrobimy
  vbmp.SaveToFile('screen.bmp');

//to zapisuje sie obraz ladnie przyciemniony
//ale kiedy damy

KomunikatObraz:=TImage.Create(Application);
KomunikatObraz.Parent:=Form1.KomunikatTlo;
KomunikatObraz.Align:=alClient;
KomunikatObraz.Picture.Bitmap:=vbmp
KomunikatObraz.Stretch:=true;

//to wyswietla sie owszem ale w takiej formie jakbysmy dopiero zrobili screena

doszlo do tego, ze rozwiazalem problem zapisujac screena po wprowadzeniu modyfikacji na nim i wyswietlam na komponencie ladujac go z pliku

 KomunikatObraz.Picture.Bitmap.LoadFromFile('screen.bmp'); 

po wszystkim zwalniam komponenty i usuwam plik. No ale nie tak to powinno dzialac przeciec. Podpowiecie mi co robie zle, ze nie wyswietla sie najbardziej aktualna wersja bitmapy na utworzonym komponencie? :)

dzieki!

1

A używasz BeginUpdate i EndUpdate? Jak nie to użyj, z domyślną wartością parametru w tej pierwszej.

1

spróbuj KomunikatObraz.Picture.Bitmap.Assign(vbmp)

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