QuickBasicNews

Смена шрифтов в QB

В этой статье я расскажу о самом простом и удобном методе смены шрифтов в 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

Hosted by uCoz