"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."
Sowieso gebruik je $left voor de vertikale positie, dus die naam klopt al niet..
Verder zet je éérst je tekst *netjes* aligned onder elkaar (haal de rotate maar eens weg) en vervolgens ga je rotaten.
Schrijf het eens op een stukje papier en draai dat papiertje eens 45°, jouw resultaat is niet meer dan logisch.
Wat je moet doen is dus ipv alleen naar onderen te gaan óók stapjes naar rechts, zodat je iets als dit krijgt zonder de rotate:
Als je hem vervolgens op de goeie plek neerzet en hem 45° draait is ie goed.
Overigens kun je met imagettftext() tekst neerzetten én de hoek bepalen, dus dan hoef je niet meer te rotaten, want zoals je ziet levert dat rotaten ranzige tekst op.
Verder zet je éérst je tekst *netjes* aligned onder elkaar (haal de rotate maar eens weg) en vervolgens ga je rotaten.
Schrijf het eens op een stukje papier en draai dat papiertje eens 45°, jouw resultaat is niet meer dan logisch.
Wat je moet doen is dus ipv alleen naar onderen te gaan óók stapjes naar rechts, zodat je iets als dit krijgt zonder de rotate:
anoniem ingelogd leerling docent rector
Als je hem vervolgens op de goeie plek neerzet en hem 45° draait is ie goed.
Overigens kun je met imagettftext() tekst neerzetten én de hoek bepalen, dus dan hoef je niet meer te rotaten, want zoals je ziet levert dat rotaten ranzige tekst op.
[ Voor 23% gewijzigd door Osiris op 04-08-2006 18:10 ]
Je zult inderdaad de losse plaatjes moeten roteren. Je hoeft er niet perse vijf te maken. Je kunt immers het tijdelijke plaatje (Waarin je schrijft en draait) gewoon hergebruiken wanneer je deze in je doelplaatje geplakt hebt. Nadeel is dat je enkel vierkante stukken kunt plakken. Je zult dus een beetje met het transparantie moeten pielen zodat de tekst elkaar niet overschrijft.
Wat je ook kunt doen is even de posities doorrekenen zodat je de tekst telkens iets verder laat verspringen en daarna het plaatje in het geheel verdraaid (en eventueel uitknipt). Zoals je in je huidige plaatje kunt zien mot de volgende regel gewoon een stukje inspringen (de regelhoogte om precies te zijn)
Wat je ook kunt doen is even de posities doorrekenen zodat je de tekst telkens iets verder laat verspringen en daarna het plaatje in het geheel verdraaid (en eventueel uitknipt). Zoals je in je huidige plaatje kunt zien mot de volgende regel gewoon een stukje inspringen (de regelhoogte om precies te zijn)
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Nou ken ik gd niet goed, maar als je erachter kan komen wat de regelhoogte is, weet je ook hoe ver je moet inspringen om het resultaat te krijgen wat je verwacht.
Aan je (wat verwarrende, omdat je $left gebruikt waar je $top bedoelt) code te zien, moet je ook gewoon op x-coordinaat $left tekenen ipv op 0 wat je nu doet. Oftewel, verander regel 10 in
.edit: spuit 11
Aan je (wat verwarrende, omdat je $left gebruikt waar je $top bedoelt) code te zien, moet je ook gewoon op x-coordinaat $left tekenen ipv op 0 wat je nu doet. Oftewel, verander regel 10 in
PHP:
10
| imagestring ($img, 2, $left, $left, $role, $black); |
.edit: spuit 11
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Als je in plaats van imagestring() imagettftext() gebruikt, kun je behalve een ander font met behulp van het 3de argument de rotatie aanpasse van de text zelf, in plaats van het gehele canvas zoals je nu doet.
Dank voor de reakties. Uiteindelijk heb ik dit en het werkt perfect. (Ga het nog uitbreiden met hoogte berekenen adhv langste string etc, maar de basis is er):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| header("Content-type: image/png"); $img = imagecreate(100, 50); $bg = imagecolorallocate($img, 255, 255, 255); $black = imagecolorallocate($img, 0, 0, 0); $roles = array('anoniem', 'ingelogd', 'leerling', 'docent', 'rector'); $left = 5; foreach ($roles as $role) { imagettftext ($img, 8, 45, $left, 50, $black, 'arial.ttf', $role); $left+= 17; } imagepng($img); |
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."
Pagina: 1