Witam!
Jak w bitmapie zamienić podany kolor na inny. Chcę zamienić każdy piksel o danym kolorze na inny. Nie chodzi tutaj o funkcję Pixels[x,y] i nie chcę tego robić na pętlach. Czy istnieje taka funkcja, która potrafi to zamienić od razu?
pozdro
Witam!
Jak w bitmapie zamienić podany kolor na inny. Chcę zamienić każdy piksel o danym kolorze na inny. Nie chodzi tutaj o funkcję Pixels[x,y] i nie chcę tego robić na pętlach. Czy istnieje taka funkcja, która potrafi to zamienić od razu?
pozdro
W jezyku LLoP jest taka instrukcja: ZamieńJedenKolorNaDrugi;
A tak serio: jesli jest to bitmapa < 8 bitowa, to możesz zamienić kolory w palecie.
To znowu ja. Musisz przygotować dwie bitmapy:
Pierwszą, zawierającą twój rysyneczek;
Drugą, na razie pustą.
<font size="4">Krok pierwszy:</span>
Na początek rysujesz w bitmapie numer dwa rectangla, w taki sposób, aby całego bitmapa zapełnić jednym kolorem:
bit2.canvas.pen.width:=0;
bit2.canvas.brush.color:=rgb(0,255,0); //Kolor, którym wypełnimy nasz bit2
bit2.canvas.rectangle(-1,-1,bit.width+1,bit.height+1); // dlatego wszystko jest o 1 więkssze, aby nie było widać obwódki, która jest innego koloru
<font size="4">Krok drugi:</span>
Dokonujemy kopiowania za pomoca opisanej tutaj http://4programmers.net/faq.php?id=689 procedury brushcopy:
bit2.canvas.brushcopy(rect(0,0,bit2.width,bit2.height),bit1,rect(0,0,bit2.width,bit2.height),rgb(255,0,0)); //podajesz kolor, który zamieniasz, a zostanie on zamieniony na kolor, którym wypełniłeś bit2.
<font size="4">A więc:</span>
Jest to bardzo szybki sposób, do tego prosty i przydatny