Я эмулировал экран с библиотекой SDL. Я хочу нарисовать шрифты на этом экране, просто используя функцию «draw_pixel», которую я уже сделал.Рисование шрифтов на экране в C
Я много искал в Интернете. Я нашел этот сайт http://jared.geek.nz/2014/jan/custom-fonts-for-microcontrollers, и код работает хорошо. Однако он не поддерживает символы переменной ширины
Я только хочу использовать исходный код.
Не могли бы вы рассказать мне, есть ли исходный код или световая библиотека для рисования шрифтов из пикселей?
EDIT: Вот мой код, который я изменил с ответа М Oehm.
int DrawChar(char c, uint8_t x, uint8_t y, int r, int g, int b, SDL_Surface *rectangle, SDL_Surface *ecran, SDL_Rect position)
{
uint8_t i,j;
// Convert the character to an index
c = c & 0x7F;
if (c < ' ') {
c = 0;
} else {
c -= ' ';
}
const uint8_t* chr = font[c];
int w = chr[0];
chr++;
for (j = 0; j < w; j++) {
for (i = 0; i < CHAR_HEIGHT; i++) {
if (chr[j] & (1 << i)) {
draw_pixel(x+j, y+i, r, g, b, rectangle, ecran, position);
}
}
}
return w + CHAR_GAP;
}
void DrawString(const char* str, uint8_t x, uint8_t y, int r, int g, int b, SDL_Surface *rectangle, SDL_Surface *ecran, SDL_Rect position)
{
while (*str) {
x += DrawChar(*str++, x, y, r, g, b, rectangle, ecran, position);
}
}
const unsigned char font[96][6] = {
{3, 0x00, 0x00, 0x00}, //
{3, 0x00, 0x2f, 0x00}, // !
{4, 0x03, 0x00, 0x00, 0x03}, // "
Вот результат: персонажи все еще в том же размере. http://hpics.li/d54f000
EDIT: Решение здесь http://www.riuson.com/lcd-image-converter Вам придется немного изменить код, потому что они какие-то ошибки, но это работает.
@M Oehm благодарит за ваш ответ. Я пробовал ваш код, но он не работает. Действительно, если я изменяю первую запись (ширину символа), тогда она рисует больше пикселей рядом с символом. Но она не меняет ее. – Johnrednex
Хммм, я протестировал этот код, хотя и не с полным алфавитом. Вы скопировали мой код или только что внесли изменения? –
Я только что внес изменения. – Johnrednex