В этой статье я расскажу о самом простом и удобном методе смены шрифтов в QB, без использования специальный библиотек. Поможет нам в этом функция POINT.
Сначала вкратце о функции. Академическим языком это звучит так: “Функция POINT возвращает текущие графические координаты курсора и атрибут цвета заданой точки расстра”. Короче говоря, обьясняясь человеческим языком, эта функция сообщает нам цвет, заданого нами, пикселя. Например “PRINT POINT(40,50)” (эта корткая прога выдаст нам номер цвета точки(40,50))
Итак, приступим к делу! Я буду использовать SCREEN 13,однако немного подкоректировав вы сможете использовать эту прогу и в других режимах экрана. Сначала напишим прогу, которая бы делала все буквы на экране жирными:
SCREEN 13 : CLS
COLOR 15 (задаём цвет текста 15 - белый)
PRINT “Жирный шрифт” (или любой другой текст)
FOR y% = 200 TO 0 STEP -1
FOR x% = 320 TO 0 STEP -1
IF POINT(x%, y%) <> 0 THEN PSET (x%, y% + 1), 15 (Если какая-либо точка не чёрная(то есть не цвета фона) тогда поставить точку снизу от неё)(также возможно PSET (x% + 1, y%), 15)
NEXT x%
NEXT y%
END
Теперь попробуем создать текст с тенью:
SCREEN 13 : CLS
COLOR 7 (задаём цвет текста 7 - серый, это будет цвет тени)
PRINT “Шрифт с тенью” (или любой другой текст)
FOR y% = 200 TO 0 STEP -1
FOR x% = 320 TO 0 STEP -1
IF POINT(x%, y%) <> 0 THEN PSET (x%+1, y% + 1), 15 (Если какая-либо точка не чёрная( то есть не цвета фона) тогда поставить точку на один пиксель справа от неё и на один снизу от неё)
NEXT x%
NEXT y%
END
Теперь сделаем переливающийся двумя цветами текст:
SCREEN 13 : CLS
COLOR 14 (задаём цвет текста 14 - желтый)
PRINT “Переливающийся шрифт”
DO UNTIL INKEY$=CHR$(32) (делать пока не нажмут пробел)
FOR y% = 200 TO 0 STEP -1
FOR x% = 320 TO 0 STEP -1
IF POINT(x%, y%) = 14 THEN PSET (x%, y%), 1 : GOTO ok: (Если какая-либо точка 14 цвета, то сделать её 1 цвета (синего))
IF POINT(x%, y%) = 1 THEN PSET (x%, y%), 14 : GOTO ok: (Если какая-либо точка 1 цвета, то сделать её 14 цвета )
ok:
NEXT x%
NEXT y%
LOOP
END
Весёлый шрифт!
SCREEN 13 : CLS
PRINT “Весёлый шрифт”
DO UNTIL INKEY$=CHR$(32) (делать пока не нажмут пробел)
FOR y% = 200 TO 0 STEP -1
FOR x% = 320 TO 0 STEP -1
col% = INT(RND*255) (случайный выбор цвета)
IF POINT(x%, y%) <> 0 THEN PSET (x%, y%), col% (Если какая-то точка не цвета фона, то сделать её любого случайного цвета )
NEXT x%
NEXT y%
LOOP
END
А теперь займёмся масштабированием:
SCREEN 13 : CLS : COLOR 15
PRINT “Увеличивающий шрифт”
FOR y% = 200 TO 0 STEP -1
FOR x% = 320 TO 0 STEP -1
IF POINT(x%, y%) <> 0 THEN PSET (50 + x%*2, 50 + y%*2), 15 (Если какая-то точка не цвета фона, то нарисовать точку с координатами (50 + x%*2, 50 + y%*2))
NEXT x%
NEXT y%
END
Другой способ увеличения:
SCREEN 13 : CLS : COLOR 15
PRINT “Увеличивающий шрифт”
FOR y% = 200 TO 0 STEP -1
FOR x% = 320 TO 0 STEP -1
IF POINT(x%, y%) <> 0 THEN
PSET (50 + x%*2, 50 + y%*2), 15
PSET (50 + x%*2 + 1, 50 + y%*2), 15
PSET (50 + x%*2, 50 + y%*2 + 1), 15
PSET (50 + x%*2 + 1, 50 + y%*2 + 1), 15 (Если какая-то точка не цвета фона, то нарисовать 4 точки с координатами (50 + x%*2, 50 + y%*2);(50 + x%*2 + 1, 50 + y%*2);(50 + x%*2, 50 + y%*2 + 1);(50 + x%*2 + 1, 50 + y%*2 + 1) )
NEXT x%
NEXT y%
END
Вот и всё! А если напишите свой оригинальный шрифт, то обязательно присылайте его мне на е-маил: vakul@i.com.ua
АВТОР: Mr.Nice Guy
|