реклама на сайте
подробности

 
 
> Алгоритм или программная реализация попиксельной бегущей строки, На Си
011119xx
сообщение May 30 2012, 08:46
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Нужен алгоритм или программная реализация попиксельной бегущей строки для вывода на дисплей разрешением 240х320. Длина строки в пикселях может быть больше 240. Используется шрифт, в котором символы имеют разную ширину. Бегущая строка должна двигаться по кругу по типу: "ая строка - Это бегу". В конце строки нужно вставлять символы разделения, например, " - ". Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Jenya7
сообщение Mar 12 2015, 09:08
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



тогда возникает вопрос - а что у нас char_width() sm.gif

Сообщение отредактировал Jenya7 - Mar 12 2015, 09:09
Go to the top of the page
 
+Quote Post
011119xx
сообщение Mar 16 2015, 03:52
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Цитата(Jenya7 @ Mar 12 2015, 14:08) *
тогда возникает вопрос - а что у нас char_width() sm.gif

Код
uint8_t char_width(uint8_t c)
{
    uint8_t codepage_index, char_index = 0;
    uint8_t codepage_count = font_pcodepage->cph.cprnum;
    uint16_t index = 0;
    pgsymbol_t p = font_psymbols;

    for(codepage_index = 0; codepage_index < codepage_count; codepage_index++)        //Выполнять для всех кодовых страниц
    {
        if((c >= font_pcodepage->cpr[codepage_index].min) &&                
           (c <= font_pcodepage->cpr[codepage_index].max))        //Если символ в кодовой странице, то
        {
            while(c > (font_pcodepage->cpr[codepage_index].min + index))    //Выполнять до нахождения символа
                index++;                                                            //Увеличение индекса  

            break;
           }
        else                                                                        //Иначе
            char_index += font_pcodepage->cpr[codepage_index].max - font_pcodepage->cpr[codepage_index].min + 1;    
    }

    char_index += index;                                                            //Индекс символа в шрифте

    p += char_index * ((font_symsize + 4) / 4);                                    //Указатель на символ

    return ((pgcsymbol_t) p)->sh.cxpix;                    //Возврат ширины символа
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 04:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016