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. |
|
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 ;) |
|
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ć. |
|
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: 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ł... |
|
PhonniX Temat założony przez niniejszego użytkownika |
» 2009-08-21 08:27:31 Poprawiłem trochę kod: 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. |
|
krdk |
» 2009-08-21 11:39:57 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ś. |
|
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? |
|
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 |
|
« 1 » 2 |