Delphi - TZigZagEffect komponens

Bitmap effektek 6. rész

forráskód letöltése

Az ZigZagEffect nagyon egyszerű: a képet felosztjuk sorokra és oszlopokra, vagyis téglalap alakú részletekre. Az animáció első lépésében megjelenítjük a bal felső sarokban található részletet, majd az ettől jobbra lévőt, és ezt egészen addig folytatjuk, amíg el nem érjük a kép jobb szélét. Ezután a második sor kirajzolását jobbról balra fogjuk elvégezni, majd megint balról jobbra, egészen addig, míg meg nem jelenítjük az egész képet. A mellékelt példaprogram megnyitása előtt a ZigZagEffect.pas-ban lévő komponenst telepítenie kell a Delphi alá. A komponens telepítéséhez szükség van továbbá a cikksorozat első részéhez mellékelt BaseEffect unit-ra is.

A sorok és oszlopok számát a GridSizeX és GridSizeY property-ken keresztül állíthatjuk be.
A kép megrajzolása most is természetesen a PrepareBitmap eljárásban történik meg. A w és h változókban eltároljuk a téglalapok szélességét és magasságát:
    w:=Width / FGridSizeX;
    h:=Height / FGridSizeY;
Az yp és xp változókban kiszámoljuk a téglalap koordinátáit:
    yp:=(FGridSizeX*FGridSizeY - FStep) div FGridSizeX;
    xp:=(FGridSizeX*FGridSizeY - FStep) mod FGridSizeX;
Minden páros sorban tükrözzük az X koordinátát a kép függőleges tengelyére. Ezzel azt érjük el, hogy a kirajzolás vízszintesen az ellenkező irányban történik meg.
    if (yp mod 2)=0 then x:=Round(xp*w) else x:=Round((FGridSizeX-xp-1)*w);
    y:=Round(yp*h);
A CopyImg eljárás meghívásával megjelenítjük a képet.
    CopyImg(x, y, Trunc(w)+1, Trunc(h)+1);
  end;
end;


Bitmap effektek cikksorozat