Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]imagettftext() - sprawdzenie czy znak występuje na położeniu poprzedniego znaku
Forum PHP.pl > Forum > Przedszkole
Michael2318
imagettftext(), jego 4 argument to położenie znaku, względem osi X. Moje pytanie - czy jest jakakolwiek możliwość sprawdzenia (wykonując to w pętli for() ) czy dany znak 'styka się' z poprzednim, a jeśli nie to pętla jest wykonywana od nowa, do momentu aż znaki wylądują w taki sposób, że minimalnie będą się ze sobą stykały na o obrazku?
gr56
Przed narysowaniem pierwszego znaku możesz obliczyć jaki obszar będzie on zajmował za pomocą funkcji imagettfbbox.
Dzięki temu będziesz wiedział gdzie ten znak się kończy i będziesz na podstawie tego mógł narysować kolejny znak.
Michael2318
Panowie, pomóżcie mi to ogarnąć. Na moją logikę - wszystko mam jak trzeba, a efekt jest trochę inny niż ja bym się spodziewał.

  1. $break_l[$x] = imagettfbbox($font_size, $angle, $font, $generate_letter);
  2. $xxx[$x] = (($break_l[$x][4] > $break_l[$x][6]) ? $break_l[$x][4] : $break_l[$x][6]) + (($x == 1) ? 0 : $xxx[$x-1]);


Najpierw generuje sobie, ile będzie zajmowała pierwsza litera miejsca, później w kolejnej zmiennej sprawdzam, czy prawy dolny róg jest dalej wysunięty na prawo czy też prawy górny róg. Wybieram ten bardziej wysuniety. Następnie jeśli pętla wykonywana jest pierwszy raz to nie dodaję nic (dodaję 0 czyli nic biggrin.gif), jeśli natomiat pętla jest wykonywana któryś raz z kolei to do obecnej wartości, dodaję punkt, gdzie kończyła się wcześniejsza literka. Efekt jest jednak nijaki... Próbowałem wyświetlić sobie jakie wyniki zwraca mi $xxx[$x] i oto one:

29
52
65
77
92


Jesli chodzi o obraz - pierwsze trzy litery są dobrze, ładnie się łączą, z kolei kolejne dwie dosłownie leżą na trzeciej... ;/ Co robię źle bo sam nie potrafię na to wpaść.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.