| Maski |
Podczas programowania w VCL często zdarza się, że chcemy mieć większą kontrolę nad wyglądem aplikacji. Sunday ćwiczył operacje na maskach w Delphi i postanowił podzielić się kodem. Kod Sundaya razem z komentarzami poniżej. Procek Maski służą do wyświetlania grafiki o kształcie innym niż prostokąt. Aby szybko utworzyć maski do plików niezbędne są przynajmniej dwie zmienne globalne np.: var ImageList:TImageList; // lista, na której będą przechowywane maski obrazek:tbitmap; // ta zmienna przechowuje obraz, którego chcesz użyć do stworzenia maski Zajmij dla nich pamięć za pomocą konstruktora Create, a do zmiennej 'obrazek' załaduj obraz, z którego chcesz utworzyć maskę: obrazek := tbitmap.Create; obrazek.LoadFromFile ('C:\b1.bmp'); // tutaj w nawiasach podajesz ścieżkę do pliku ImageList :=TImageList.Create (nil); Wpisz procedurę: procedure zrobmaske(obraz:tbitmap; kolor:tcolor; var lista:timagelist); var bitmap:tbitmap; begin Bitmap :=TBitmap.Create; Bitmap.Assign(obraz); lista.Width :=bitmap.Width; Lista.Height :=bitmap.Height; Lista.AddMasked (bitmap,kolor); end; Powyższa procedura służy do tworzenia maski.
Teraz wpisz: procedure rysujmaske (lista:timagelist; Canvas:TCanvas; X,Y:integer; nr:integer); begin lista.Draw (Canvas, x,y,nr); end; Ta procedura rysuje maskę.
Parametry:
Pamiętaj!
teraz podam kod procedury, która tworzy i rysuje maskę jako animację (możesz ją wkleić np.do procedury button.click): var ImageList:TimageList; obrazek1,obrazek2:tbitmap; i:integer; procedure zrobmaske(obraz:tbitmap; kolor:tcolor; var lista:timagelist); var bitmap:tbitmap; begin Bitmap :=TBitmap.Create; Bitmap.Assign(obraz); lista.Width :=bitmap.Width; Lista.Height :=bitmap.Height; Lista.AddMasked (bitmap,kolor); end; procedure rysujmaske (lista:timagelist; Canvas:TCanvas; X,Y:integer; nr:integer); begin lista.Draw (Canvas, x,y,nr); end; {tutaj np. button1.click} begin obrazek1 := tbitmap.Create; obrazek1.LoadFromFile ('C:\b1.bmp'); //tutaj w nawiasach podajesz ścieżkę do pliku obrazek2 := tbitmap.Create; obrazek2.LoadFromFile ('C:\b2.bmp'); //tutaj w nawiasach podajesz ścieżkę do pliku ImageList :=TImageList.Create (nil); zrobmaske (obrazek1,rgb(0,0,0),imagelist); zrobmaske (obrazek2,rgb(0,0,0),imagelist); for i := 1 to 15 do begin rysujmaske (imagelist,form1.canvas,1,1,0) sleep (800); rysujmaske (imagelist,form1.canvas,1,1,1) sleep (800); end; end; Na przykład w button2.click zrobmaske (obrazek1,rgb(0,0,0),imagelist); rysujmaske (imagelist,form1.canvas,1,1,0); Sunday
|
Prowadzącym ten blog jest od 6 lat Krzysztof "Procek" Ścira - Obecnie student AGH. Blog traktujący o szeroko pojętej IT - można tu poczytać o zagadnieniach związanych z m. in. programowaniem, grafiką, hardware i systemami operacyjnymi. Warto dodać kanał RSS tego bloga do swojego czytnika.[Więcej]