HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Corel Photo Paint programozása


Corel 4. rész

Példaprogram letöltése

28610 bájt

A Corel cikksorozat eddigi részeiben kizárólag a CoreDraw alkalmazással foglalkoztunk. Éppen ideje, hogy egy pár szót írjunk a Corel PhotoPaint-ről is, ami a maga nemében szintén egy nagyszerű program.
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).
  PPaint.SetVisible(true);
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;

Cikksorozat

#IDKategóriaCikk címeSorozat
1063DelphiInterbase 6 alkalmazása Delphi-ben1. rész
1072DelphiInterbase 6 alkalmazása Delphi-ben2. rész
1084DelphiInterbase 6 alkalmazása Delphi-ben3. rész
1092DelphiTIBTable komponens4. rész
1102DelphiTIBTransaction komponens5. rész
1111DelphiTIBQuery komponens6. rész
1120DelphiTIBStoredProc komponens7. rész
1128DelphiTIBDataSet komponens8. rész
1141DelphiTIBSQL komponens9. rész
1150DelphiTIBSQLMonitor komponens10. rész
1159DelphiTIBUpdateSQL komponens11. rész
1167DelphiIBEvents komponens12. rész
1177DelphiIBDatabaseInfo komponens használata13. rész
1183DelphiTIBConfigService komponens14. rész
1192DelphiTIBSecurityService komponens15. rész
1204DelphiTIBServerProperties komponens16. rész
1213DelphiTIBBackupService komponens17. rész
1222DelphiTIBRestoreService komponens18. rész
1231DelphiTIBValidationService komponens19. rész
1240DelphiTIBStatisticalService komponens20. rész
1249DelphiTIBLogService komponens21. rész
1258DelphiTIBUninstall komponens22. rész
1267DelphiInterBase Express komponenscsomag23. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 336. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |