A Corel PhotoPaint a CorelDraw-al ellentétben nem egy vektorgrafikus rajzolóprogram, inkább hasonlít az Adobe cég PhotoShop programjához.
Ebben a cikkben egy saját képet készítünk, különböző effektek felhasználásával, majd az elkészült képet elmentjük GIF formátumban.
Csatlakozunk a Corel PhotoPaint alkalmazáshoz, a szokásos módon. Először persze létre kell hoznunk a PPaint változót OleVariant típussal. A változó neve természetesen más is lehet.
PPaint := CreateOleObject('CorelPhotoPaint.Automation.9');
A FileNew függvénnyel létrehozunk egy új képet. A függvény paraméterei a következők:
- Width: a kép szélessége pixelben.
- Height: a kép magassága pixelben.
- Type: a kép típusa
1 = RGB
2 = 256 szürkeskála
3 = fekete fehér kép
4 = fix palettával rendelkező kép
5 = CMYK
7 = LAB
- HRes vízszintes felbontás (DPI).
- VRes: függőleges felbontás (DPI).
- PartialFile: true esetén csak a képnek egy részét szerkesztjük. Ez animációknál nem használható!
- MovieFile: true estén animációt hoz létre.
- NumberFrames: animáció esetén a képkockák száma.
- Left: ha a képnek csak egy részét szerkesztjük, akkor ennek a részletnek a bal széle koordinátája.
- Top: ua., mint a Left, de a felső szél koordinátája.
- Right: ua., mint a Left, de a jobb szél koordinátája.
- Bottom: ua., mint a Left, de az alsó szél koordinátája.
- Color1: az első színösszetevő értéke. RGB képnél a piros.
- Color2: a második színösszetevő értéke. RGB képnél a zöld.
- Color3: a harmadik színösszetevő értéke. RGB képnél a kék.
- Color4: a negyedik színösszetevő értéke, ha van ilyen. Például CMYK kép esetén a fekete színösszetevő.
- Backgroundless: true esetén nincs háttér.
PPaint.FileNew(640, 100, 1, 180, 180, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0);
A SetVisible függvénnyel megjelenítjük a képet. Ha a paraméter true, akkor a kép látszik, egyébként nem (például ha nem akarjuk, hogy a felhasználó lássa, hogy mit rajzolunk).
Létrehozunk egy új szöveg objektumot. Ehhez először is a TextTool függvényt kell meghívnunk. Ezután a TextSetting függvénnyel beállítjuk a szöveg tulajdonságait. A TextAppend függvénnyel megadjuk a megjelenítendő szöveget, a TextRender függvénnyel pedig megjelenítjük azt.
PPaint.TextTool(20, 64, false, true, 0);
PPaint.TextSetting('Font', 'Arial Black');
PPaint.TextSetting('TypeSize', '25.0');
PPaint.TextAppend('Animare Software');
PPaint.TextRender;
A szöveg objektumunkat eredetileg a (20,64) koordinátán jelenítettük meg, de jobban nézne ki, ha a kép közepére igazítanánk. Ezt az ObjectAlign függvénnyel tehetjük meg. Ennek paraméterei a következők:
- Horizontal: vízszintes igazítás:
0 = nincs igazítás
1 = balra
2 = jobbra
3 = középre
4 = a kép szélességéhez
- Vertical: függőleges igazítás:
0 = nincs
1 = felülre
2 = alulra
3 = középre
4 = a kép magasságához
- Center: true érték esetén az objektumot a kép közepére helyezi.
- Grid: true érték esetén az objektumot a rácshoz igazítja.
- Active: true esetén az aktív objektumhoz igazítja.
- SelToDoc: true érték esetén a dokumentumhoz igazítja.
- DistrBounds: true érték esetén a kép széleihez igazítja.
- HorizAlign: true érték esetén vízszintesen igazítja az objektumokat.
- VertAlign: true érték esetén függőlegesen igazítja az objektumokat.
PPaint.ObjectAlign(3, 3, false, false, false, true, true, true, true);
PPaint.EndObject;
Készítünk egy maszkot a szövegről.
PPaint.MaskCreate(true, 0);
PPaint.EndMaskCreate;
Az EffectEmboss függvénnyel letörjük a szöveg széleit, ezzel némileg 3D-s hatást elérve.
PPaint.EffectEmboss(2, 500, 63, 1, 5, 0, 0, 0, 0);
PPaint.MaskChannelAdd('Alpha 1');
PPaint.MaskRemove;
Az EffectGaussianBlue effekt-tel elmossuk a képet.
PPaint.EffectGaussianBlur(3.00);
PPaint.EffectEmboss(0, 500, 63, 1, 5, 0, 0, 0, 0);
Kék színnel kitöltjük a szöveget.
PPaint.MaskChannelToMask(0, 0);
PPaint.ImageInvert;
PPaint.EndColorEffect;
PPaint.EditFill(0, 60, 100, 1, 0, 12, 58, 77, 34, 0, 0);
PPaint.FillSolid(5, 0, 0, 255, 0);
PPaint.EndEditFill ;
PPaint.MaskRemove;
PPaint.ObjectCreate(false);
end;
A kép mentését a Button2 OnClick eseményénél végezzük el. A képet GIF formátumban mentjük el, ami egy rögzített színpalettát használ. A színpaletta maximum 256 színből állhat, de ezeket tetszőlegesen kiválaszthatjuk. Mivel a mi képünk szinte csak kék színárnyalatokat használ, ezért egy ilyen színpalettát fogunk elkészíteni.
Az ImageConvertPaletted függvénnyel átalakítjuk a képünket 256 színűvé. Ennek a függvénynek a paraméterei:
- RenderType: a konvertálás színveszteséggel jár, ezt ún. ditherezéssel lehet valamelyest korrigálni. Ennek módját határozza meg ez a paraméter:
1 = nincs
2 = Error Diffusion
3 = Ordered
- Colors: a használni kívánt színek száma 1-256-ig.
- Flatten: megadja, hogy az objektumokat összevonja-e egy képpé:
0 = nem vonja össze
1 = összevonja.
A PeletteColor függvénnyel állíthatjuk be a színpaletta egyes színeit. Paraméterei:
- ColorModel: a színképzés módja:
3 = CMYK (türkiz, lila, sárga, fekete)
5 = RGB (piros, zöld, kék)
8 = fekete és fehér
9 = szürkeskála
- Color1: az első színösszetevő értéke. RGB-nél piros.
- Color2: a második színösszetevő értéke. RGB-nél zöld.
- Color3: a harmadik színösszetevő értéke. RGB-nél kék.
- Color4: a negyedik színösszetevő értéke. Például CMYK-nál a fekete.
- Index: a szín sorszáma, 0-255 lehet.
PPaint.ImageConvertPaletted( 1, 216);
for t:=0 to 127 do begin
PPaint.PaletteColor(5, 0, 0, t*2, 0, t*2);
PPaint.PaletteColor(5, 255-t*2, 255-t*2, 255,0, t*2+1);
end;
PPaint.EndConvertPaletted;
A FilterGif függvénnyel beállítjuk a GIF kép tulajdonságait. A paraméterek a következők:
- InvertMask: invertálja az átlátszóság maszkot.
- Interlace: interlaced módban menti el a képet.
- Transparent: megadja az átlátszóság módját:
0 = nincs
1 = az index paraméterben megadott sorszámú szín az átlátszó
2 = az átlátszóság maszkot alkalmazza.
- Index: az átlátszó szín sorszáma, 0-255 lehet.
- Delay: AnimGIF esetében a képkockák közötti várakozási idő századmásodpercben.
- Red: az átlátszóság maszk piros színösszetevője.
- Green: az átlátszóság maszk zöld színösszetevője.
- Blue: az átlátszóság maszk kék színösszetevője.
PPaint.FilterGif(false, false, 0, 0, 0, 0, 0);
A FileSave függvénnyel elmentjük a fájlt. Ennek első paramétere a fájl neve, a második a fájl típusa (773=GIF), és a harmadik a tömörítés típusa (0 = nincs, 1 = LZW, 2 = Packbits, 3 = JPEG).
PPaint.FileSave(ExtractFilePath(Application.ExeName)+'animare.gif', 773, 0);
end;
|