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!