[Delphi] Obrazek zamiast formy


(Dawidex11) #1

Witam, mam problem, otóż chciałbym zrobić aby zamiast formy był sam obrazek ale obrazek nie jest zwykły tylko jest z rzuconym cieniem i innymi bajerami, lecz nie wiem jak to zrobić :frowning: może ktoś z was wie jak to zrobić? Prosił bym o jakieś źródło :slight_smile: ...

Z góry dziękuje :wink:


(system) #2

Potrzebujesz formy do wyświetlenia obrazku, no chyba że napiszesz specjalny komponent.

Bez pisania komponenta to proste, jedynie obrazek najlepiej wstawić w zasoby i wczytywać stamtąd:

procedure TForm1.FormCreate(Sender: TObject);

begin

  BorderStyle:=bsNone;

  Position:=poScreenCenter;

  BoundsRect:=Rect(Left,Top,Left+256,Top+256);

end;


procedure TForm1.FormDblClick(Sender: TObject);

begin

  Close;

end;


procedure TForm1.FormPaint(Sender: TObject);

var Bmp:TBitmap;

begin

  Bmp:=TBitmap.Create;

  try

    Bmp.LoadFromFile('c:\windows\Soap Bubbles.bmp');

    Canvas.CopyRect(ClientRect,Bmp.Canvas,ClientRect);

  finally

    Bmp.Free;

  end;

end;

(Dawidex11) #3

Ale obrazek nie jest w formacie . Bmp tylko w .png a jak go chciałbym zmienić na .BMP to obrazek jest cały czarny :frowning:

Jakieś inne propozycje ? :frowning:


(Tom 85) #4

cały czarny ?? chyba nie próbujesz tylko zmienić rozszerzenia z png na bmp ????

otwórz obrazek w jakimś programie do grafiki/zdjęć (może byc nawet paint) potem kliknij Plik -> zapisz jako i z listy wybierz rozszerzenie bmp no i OK :slight_smile:


(Dawidex11) #5

Lol tak jak pisałem obrazek staje sie czarny , zresztą paint nie obsługuje przezroczystości ... wiec gdzie nie gdzie byłyby białe łatki...


(system) #6

użyj komponentu: TPNGImage

instrukcja tu


(Dawidex11) #7

Już dawno temu miałem ten komponent zainstalowany lecz on nic nie daje a w tej instrukcji nie jest opisane jak go użyć zamiast formy :frowning: ...

Jak bys mogl "13tySmok" napisac mi kod byl bym bardzo wdzięczny :slight_smile:

Dziękuje i pozdrawiam :wink:


(system) #8

Obawiam się że to ci nie pomoże, ponieważ postawiłeś zbyt wysoką poprzeczkę jak na początkującego. Musisz najpierw zrozumieć prostsze pojęcia. TPngImage pochodzi od klasy TImage, więc działa tak samo, jedyna różnica że wczytuje PNG pliki zamiast BMP plików. Ale jak zrozumiałem chcesz mieć przezroczystość, nie tędy droga, nie da się namalować formy przezroczystym kolorem aby ona stała się przezroczysta. Poczytaj na temat następujących funkcji API:

CreateEllipticRgn();

CreatePolygonRgn();

CreateRectRgn();

CombineRgn();

SetWindowRgn();