Недавно добавленные исходники

•  TDictionary Custom Sort  3 225

•  Fast Watermark Sources  2 991

•  3D Designer  4 750

•  Sik Screen Capture  3 259

•  Patch Maker  3 467

•  Айболит (remote control)  3 528

•  ListBox Drag & Drop  2 904

•  Доска для игры Реверси  80 781

•  Графические эффекты  3 843

•  Рисование по маске  3 171

•  Перетаскивание изображений  2 544

•  Canvas Drawing  2 672

•  Рисование Луны  2 500

•  Поворот изображения  2 093

•  Рисование стержней  2 120

•  Paint on Shape  1 525

•  Генератор кроссвордов  2 183

•  Головоломка Paletto  1 730

•  Теорема Монжа об окружностях  2 158

•  Пазл Numbrix  1 649

•  Заборы и коммивояжеры  2 016

•  Игра HIP  1 262

•  Игра Go (Го)  1 200

•  Симулятор лифта  1 422

•  Программа укладки плитки  1 177

•  Генератор лабиринта  1 512

•  Проверка числового ввода  1 297

•  HEX View  1 466

•  Физический маятник  1 322

•  Задача коммивояжера  1 357

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Создание шрифтов формата BMP для использования в играх! Также постейший фильтр изображений



Оформил: XVeL
Автор: Spose

Итак я уже писал про отрисовку таких шрифтов в игре, но в том примере все было сильно неадаптировано под програмный код и занимало несколько страниц!
Для создания своих шрифтов будем писать программу: "ФонтГен"
На форме должны присутствовать:
Button1: TButton; //Кнопка генерации
Image1: TImage; //Тут будем рисовать
Edit1: TEdit;//От суда будем брать название шрифта
Edit3: TEdit;//От суда будем брать цвет шрифта

На нажатие кнопки(OnClick) пишем:
var
   x,y,z:integer;
   c:char;
begin
   Image1.Picture.LoadFromFile('shablon.bmp'); //Ну берем 24 разрядный фон из БИТМАПА
   x:=2; //Устанавливаем место отрисовки первой буквы на 2 (первое место будет пробелом)
   for c:='!' to 'я' do //Из таблицы символов от "!" до буквы "я" делаем:
   with image1.Canvas do
   begin
      font.Name:=(edit1.Text); //Узнаем название шрифта
      font.Size:=12; //Его размер ставим на 12
      font.Style:=[fsBold]; //Делаем шрифт ЖИРНЫМ
      font.Color:=stringtocolor(edit3.Text); //Ставим цвет шрифта
      textout(x*20-trunc(textwidth(c)*1.5),10-(textheight(c) div 2),c); //Рисуем данный(по номеру) символ из таблицы символов (см. выше) на этом месте
      x:=x+1; //Следующее место отрисовки
   end; //Отрисовали все символы!!!
   //Далее идет фильтр обводящий каждую букву черным цветом
   for y:=0 to x*20 do //20 - ширина кадра(в одном кадре - одна буква)
   for z:=0 to 20 do
   if image1.Canvas.Pixels[y,z]=stringtocolor(edit3.Text) then //Если цвет пикселя=Цвету шрифта то
   begin
      if image1.Canvas.Pixels[y-1,z]=clWhite then //Если надо то обводим
         image1.Canvas.Pixels[y-1,z]:=clBlack;
      if image1.Canvas.Pixels[y-1,z-1]=clWhite then
         image1.Canvas.Pixels[y-1,z-1]:=clBlack;
      if image1.Canvas.Pixels[y+1,z-1]=clWhite then
         image1.Canvas.Pixels[y+1,z-1]:=clBlack;
      if image1.Canvas.Pixels[y,z+1]=clWhite then
         image1.Canvas.Pixels[y,z+1]:=clBlack;
      if image1.Canvas.Pixels[y,z-1]=clWhite then
         image1.Canvas.Pixels[y,z-1]:=clBlack;
      if image1.Canvas.Pixels[y+1,z+1]=clWhite then
         image1.Canvas.Pixels[y+1,z+1]:=clBlack;
      if image1.Canvas.Pixels[y+1,z]=clWhite then
         image1.Canvas.Pixels[y+1,z]:=clBlack;
      if image1.Canvas.Pixels[y-1,z+1]=clWhite then
         image1.Canvas.Pixels[y-1,z+1]:=clBlack;
   end;
   image1.picture.SaveToFile(edit1.text+'.bmp'); //Сохраняем полученый БИТМАП в "Название Шрифта".bmp
end;
Прога действительно делает шрифты, но минус - если менять размер шрифта, то параметры отрисовки каждой буквы придется менять! Иначе возможны глюки!
Теперь идет процедура отрисовки:
procedure Tmainform.DCN(Text:string;x,y:integer;center:integer);
var
   h:Tpicturecollectionitem;
   z:integer;
begin
   h:=imagelist.Items.Find('cnb');
   if center=1 then
   for z:=1 to strlen(pchar(text)) do
   h.Draw(dxdraw.Surface,x+trunc(h.Width*0.65)*(z-1)-trunc(h.Width*0.65)*trunc(strlen(pchar(text))*0.5),
   y,ord(text[z])-32)
   else
   for z:=1 to strlen(pchar(text)) do
   h.Draw(dxdraw.Surface,x+trunc(h.Width*0.65)*(z-1),y,ord(text[z])-32);
end;
Как использовать эту процедуру:
DCN({Координаты по икс},{Координаты по игрик},'ТЕКСТ', {Центрировать или нет (1 или 0)}
Вот в принципе и всё.




Похожие по теме исходники

Создание таблиц в Paradox

BmpHViewer

YV-12 or YVU-9 to BMP

BMP Song Creator

 

Нейросеть для распознавания образов

Механизм станка качалки для нефти

Весы для взвешивания

Кувшины для воды

 

Доска для игры Реверси

Пример использования DBGrid

Фильтрование данных

Сравнение двух изображений

 

IMod (обработка изображений)

Перетаскивание изображений




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте