Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro] Kolorowanie liter

Ostatnio zmodyfikowano 2009-08-21 17:57
Autor Wiadomość
PhonniX
Temat założony przez niniejszego użytkownika
[Allegro] Kolorowanie liter
» 2009-08-20 15:06:45
Witam.
Chcę zrobić coś takiego, że mam napis np. Kaczka, potrzebuje obliczyć np. 53% jego długości i pokolorować to na różowo.
Czy jest możliwe zrobić coś takiego w allegro?
Z góry dziękuje.
P-9650
krdk
» 2009-08-20 17:22:29
Wszystko się da. Matematyka się kłania :)Najpierw napisz, czy twój napis jest obiektem typu string.
Ps. Napisz na forum ;)
P-9654
PhonniX
Temat założony przez niniejszego użytkownika
» 2009-08-20 20:02:32
Tak string, znalazłem jak obliczyć szerokość napisu(text_length(font, "Napis");) ale nie wiem jak jego pomalować.
P-9664
malan
» 2009-08-20 21:36:55
Możesz do tego użyć np. textprintf_ex (jest tak argument odpowiadający za kolor) oraz substr. Mały przykład:
C/C++
std::string tekst = "przyklad";
//...
textprintf_ex( screen, font, 20, 20, makecol( 0, 0, 0 ), - 1, "%s",( tekst.substr( 0, tekst.length() / 2 ).c_str() );

textprintf_ex( screen, font, x, 20, makecol( 255, 255, 255 ), - 1, "%s",( tekst.substr( tekst.length() / 2 + 1, std::string::npos ).c_str() );
Problem polega na tym, że musisz sprawdzić ile będzie wynosił ten 'x'- żeby tekst nie był za bardzo oddalony lub się nie nakładał...
P-9667
PhonniX
Temat założony przez niniejszego użytkownika
» 2009-08-21 08:27:31
Poprawiłem trochę kod:
C/C++
int procent = 20;
std::string tekst = "Kaczka";
int size = text_length( font, tekst.c_str() ) /( 100 / procent );
textprintf_ex( bufor, font, 20, 20, makecol( 0, 0, 0 ), - 1, "%s",( tekst.substr( 0, tekst.length() /( 100 / procent ) ).c_str() ) );
textprintf_ex( bufor, font, 20 + size, 20, makecol( 255, 255, 255 ), - 1, "%s",( tekst.substr( tekst.length() /( 100 / procent ), std::string::npos ).c_str() ) );
Wszystko działa, ale chcę aby to było dokładniejsze, że jak procent dam 10 to zamaluje pół litery K na jeden kolor a resztę na inny.
P-9674
krdk
» 2009-08-21 11:39:57
brak opisu
brak opisu

Zrób 2 bitmapy, jak na rysunku.W pętli najpierw wyświetlaj b1, później na b1 nałóż b2. Wypełnij b1 np. w 53% kolorem czerwonym.
Mam nadzieję, że zrozumiałeś.
P-9675
PhonniX
Temat założony przez niniejszego użytkownika
» 2009-08-21 12:12:00
No ale w tym problem, że jak to wypełnić w 53%?
Nie ma jakiegoś prostszego rozwiązania?
P-9678
krdk
» 2009-08-21 12:14:47
To zrób tą bitmapę o wymiarach 100 na y, i jeśli chcesz 53 % to wypełnij ją kreskami o szerokości 1 piksela, i zrób tych kresek właśnie 53. Może i nie jest to efektywne, ale zawsze coś :P
P-9679
« 1 » 2
  Strona 1 z 2 Następna strona