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; ```

6 komentarzy

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