Skanowanie obrazka i zabawa kolorami ciąg dalszy
psychoszayber
Skanowanie obrazka i zabawa kolorami ciąg dalszy..
CHCIELIŚCIE WIĘCEJ PRZYKŁADÓW TO MACIE !!!
1. kratkowanie (dla dobrych kart graficznych
```delphi
Var R,G,B:byte; WI,HE:integer; bol:boolean; begin bol:=false; for wi:=0 to img1.picture.width do //skanowanie obrazka -start begin for he:=0 to img1.picture.height do begin bol:=not(bol); if bol then begin outer.canvas.pixels[wi,he]:=img1.canvas.pixels[wi,he]; end else begin outer.canvas.pixels[wi,he]:=img2.canvas.pixels[wi,he]; end; end; end;//skanowanie obrazka -koniec end; ``` |
2. paski pionowe (dla dobrych kart graficznych
```delphi
Var R,G,B:byte; WI,HE:integer; bol:boolean; begin bol:=false; for wi:=0 to img1.picture.width do //skanowanie obrazka -start begin bol:=not(bol); for he:=0 to img1.picture.height do begin if bol then begin outer.canvas.pixels[wi,he]:=img1.canvas.pixels[wi,he]; end else begin outer.canvas.pixels[wi,he]:=img2.canvas.pixels[wi,he]; end; end; end;//skanowanie obrazka -koniec end; ``` |
3. paski poziome (dla dobrych kart graficznych
```delphi
Var R,G,B:byte; WI,HE:integer; bol:boolean; begin bol:=false; for he:=0 to img1.picture.height do //skanowanie obrazka -start begin bol:=not(bol); for wi:=0 to img1.picture.width do begin if bol then begin outer.canvas.pixels[wi,he]:=img1.canvas.pixels[wi,he]; end else begin outer.canvas.pixels[wi,he]:=img2.canvas.pixels[wi,he]; end; end; end;//skanowanie obrazka -koniec end; ``` |
4. inna kolejność
```delphi
Var R,G,B:byte; WI,HE:integer; begin for wi:=0 to img1.picture.width do //skanowanie obrazka -start begin for he:=0 to img1.picture.height do begin R:=getRvalue(img1.canvas.pixels[wi,he]) +getRvalue(img2.canvas.pixels[wi,he]); (*// dodawanie kolorów może być xor, -, * itd. *) g:=getgvalue(img1.canvas.pixels[wi,he]) +getgvalue(img2.canvas.pixels[wi,he]); // dodawanie kolorów b:=getbvalue(img1.canvas.pixels[wi,he]) +getbvalue(img2.canvas.pixels[wi,he]); // dodawanie kolorów outer.canvas.pixels[wi,he]:=rgb(B,R,G); // końcowe rysowanie wyliczonych kolorów w 3 obrazku w innej kolejności może być (* g,b,r ; r,b,g itd *) end; end; //skanowanie obrazka -koniec end; ``` |
5. Blue box
stwórz 3 spinedity nazwij je kolejno re, gr, bl one będą oznaczały kolor przezroczysty.
```delphi
Var WI,HE:integer; begin for wi:=0 to img1.picture.width do //skanowanie obrazka -start begin for he:=0 to img1.picture.height do begin if img1.canvas.pixels[wi,he]=rgb(re.value,gr.value,bl.value) then outer.canvas.pixels[wi,he]:=img2.canvas.pixels[wi,he] else outer.canvas.pixels[wi,he]:=img1.canvas.pixels[wi,he]; end; end; //skanowanie obrazka -koniec end; ``` |
szajs niestety ktoto widział na pixelach robić! :(
"(dla dobrych kart graficznych)" - mam wrazenie ze malo wiesz o programowaniu w delphi :| Przecierz z tym kodem to grafa za cholere tego nie przetworzy, tym zajmie sie procesor, a geafa tylko wyswietli (co zrobi w ulamek sekundy).
I nastepna sprawa to Drajwer dobrze rzecze: ScanLine'm go wziasc to bedzie szybciej.
Jak byś użył ScanLine to przyśpieszył procedurea wykonywała by się >>10x szybciej!!!
ja bym zrobil na scanline :-|
a mi sie podobaja Twoje ostatnie artykuly i nie zniechecaj sie poczatkowa nieprzychylnoscia forumowiczow :P.
Nio, teraz to sie rozumie ;P