Zdravim,
povedzme, ze musim vykreslit obrazok, ktoreho podoba je ovplyvnena roznymi premennymi. Vdaka tomu mi logicky v kode vznika vela switchov a podmienok a niektore casti obrazku sa opakuju aj na viacerych miestach a teda rovnaky kod sa nachadza na viacerych miestach v zdrojovom kode.
Skusal som to podelit do funkcii, ale narazil som na dva problemy, jeden teoreticky a druhy prakticky a dost pravdepodobne so sebou suvisia.
Pokial do funkcie vlozim len same image... funkcie, tak potom nemam co vratit v return a aj obrazok pri pokuse o vykreslenie kodu vo volanej funkcii vypisuje chybu.
Existuje teda nejaky sposob ako vykreslit pomocou gd2 obrazky volanim funkcii?
Fórum › PHP
GD2 a funkcie
Mal som pocit, ze som to napisal strasne zlozito...:)Prog. píše:#
# Daj nejaky strucny priklad, riesenie urcite existuje...
Tak napriklad tento kod
imagerectangle($image, 35, 40, 305, 180, $GC);
imageline($image, 125, 55, 130, 55, $GC);
imageline($image, 125, 165, 130, 165, $GC);
imageline($image, 210, 55, 215, 55, $GC);
imageline($image, 210, 165, 215, 165, $GC);
sa v zdrojaku opakuje viackrat a niekde sa aj to co vykresluje posuva na inu poziciu, cize som ho chcel dat do funkcie kvoli zjednoduseniu pripadnej neskorsej editacie:
function obrazok($x1, $y1, $x2, $y2)
{
imagerectangle($image, 35+$x1, 40+$y1, 305+$x2, 180+$y2, $GC);
imageline($image, 125+$x1, 55+$y1, 130+$x2, 55+$y2, $GC);
imageline($image, 125+$x1, 165+$y1, 130+$x2, 165+$y2, $GC);
imageline($image, 210+$x1, 55+$y1, 215+$x2, 55+$y2, $GC);
imageline($image, 210+$x1, 165+$y1, 215+$x2, 165+$y2, $GC);
}
Ale ked to takto urobim a potom tuto funkciu v kode zavolam, tak to prestane fungovat a namiesto obrazku sa objavi chybova hlaska
funkcii predavaj aj ref na $image a $GC:
function obrazok(&$image,&$GC,$x1, $y1, $x2, $y2)
{
imagerectangle($image, 35+$x1, 40+$y1, 305+$x2, 180+$y2, $GC);
imageline($image, 125+$x1, 55+$y1, 130+$x2, 55+$y2, $GC);
imageline($image, 125+$x1, 165+$y1, 130+$x2, 165+$y2, $GC);
imageline($image, 210+$x1, 55+$y1, 215+$x2, 55+$y2, $GC);
imageline($image, 210+$x1, 165+$y1, 215+$x2, 165+$y2, $GC);
}
(http://www.php.net/manual/en/language.references.pass.php)
alebo pouzi globalne premenne:
function obrazok($x1, $y1, $x2, $y2)
{
global $image,$GC;
imagerectangle($image, 35+$x1, 40+$y1, 305+$x2, 180+$y2, $GC);
imageline($image, 125+$x1, 55+$y1, 130+$x2, 55+$y2, $GC);
imageline($image, 125+$x1, 165+$y1, 130+$x2, 165+$y2, $GC);
imageline($image, 210+$x1, 55+$y1, 215+$x2, 55+$y2, $GC);
imageline($image, 210+$x1, 165+$y1, 215+$x2, 165+$y2, $GC);
}
(http://www.php.net/manual/en/language.variables.scope.php)
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 43 hostů
Podobná vlákna
Vykreslovanie v GD2 kniznice — založil BgDestroy
Rozpadnute obrazky cez GD2 — založil Smokie
Casove funkcie — založil netman92
Funkcie a premenne — založil Eidam655
Moderátoři diskuze