Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Создание собственных шрифтов

Rusa




Рис. 8.2. Окно программы, испол&# 747c216h 1100;зующей встроенные шрифты

Хотя на первый взгляд это может показаться сложным, на самом деле создавать собственные шрифты довольно просто. При этом Вы пол&# 747c216h 1091;чите два существенных преимущества. Во-первых, собственные шрифты придают программе уникальный внешний вид, отличающий ее от других. Во-вторых, собственные шрифты позволяют лучше управлять выводом текста. Прежде чем начать писать программу создания собственного шрифта, необходимо отметить, что его создание не означает определе­ние нового шрифта. Скорее это выглядит как клонирование существующего шрифта и подгонка его параметров согласно задаваемым Вами спецификациям (то есть не нужно определять форму каждого символа создаваемого шрифта.)

Для создания собственного шрифта испол&# 747c216h 1100;зуется функция API CreateFont()

HFONT CreateFont(int Height, int Width,

int Escapement, int Orientation,

int Weight, DWORD Ital,

DWORD Underline, DWORD StrikeThru,

DWORD Charset, DWORD Precision,

DWORD ClipPreqision, DWORD Quality,

DWORD Pitch, LPCSTR FontName);

Height Width Width равен 0, Windows автоматически подставляет значение, определяемое текущими пропорциями шрифта. Значения Height Width

Escapement

Orientation

Weight задает насыщенность (жирность) шрифта и может принимать значения в диапазоне от 0 до 1000. Значение 0 определяет насыщенность по умолчанию, значение 400 - нормальную насыщенность, а 700 - жирный шрифт. Для задания насыщенности шрифта можно также испол&# 747c216h 1100;зовать следующие макросы:

FW_DONTCARE

FW_EXTRALIGHT

FW_LIGHT

FW_NORMAL

FW_MEDIUM

FW_SEMIBOLD

FW_BOLD

FW_EXTRABOLD

FW_HEAVY



Ital Underline StrikeThru

Параметр Charset определяет множество символов шрифта. В следующем примере мы будем испол&# 747c216h 1100;зовать ANSI_CHARSET Precision OUT_DEFAULT_PRECIS ClipPrecision CLIP_DEFAULT_PRECIS

Charset Precision ClipPrecision, обратитесь к Руководству по функциям и форматам данных API (или к MSDN Library Help - приложению Visual C

Quality

DEFAULT_QUALITY

DRAFT_QUALITY

PROOF_QUALITY

Pitch

DEFAULT_PITCH

FIXED_PITCH

VARIABLE_PITCH

FF_DECORATIVE

FF_DONTCARE

FF_MODERN

FF_ROMAN

FF_SCRIPT

FF_SWISS

Pitch

FontName

CreateFont NULL



CreateFont физически не создает новый шрифт, - она только преобра­зует шрифт, реально существующий в системе, таким образом, чтобы пол&# 747c216h 1091;ченный в результате шрифт максимально соответствовал задаваемым спецификациям.

CreateFont , должны быть удалены, прежде чем программа завершит свое выпол&# 747c216h 1085;ение. Для удаления шрифта испол&# 747c216h 1100;зует­ся функция DeleteObject

Times New Roman Cyr Parsek Cyrillic. Каждый раз при выборе команды меню Сменить шрифт выбирается и отобра­жается новый шрифт. Эта программа испол&# 747c216h 1100;зует тот же файл ресурсов, что и пример из предыдущего раздела.

#include <Windows.h>

#include <String.h>

#include <Stdio.h>

#include "Text.h"

LRESULT CALLBACK WindowFunc(HWND,UINT,WPARAM,LPARAM);

char szWinName[] = " "; //

char str[255]; // Буфер строки вывода

char frame[40]= "По умолчанию"; // Имя шрифта

int X=0, Y=0; // Текущие координаты строки

int maxX, maxY; // Размеры экрана

HDC  memdc; // DC виртуального окна

HBITMAP hbit; // Растр - это виртуальное окно

HBRUSH hbrush; // Дескриптор кисти

HFONT holdf, hnewf1, hnewf2; // Дескрипторы шрифтов

int WINAPI WinMain (HINSTANCE hThisInst,

HINSTANCE hPrevInst,

LPSTR lpszArgs,

int nWinMode)

return msg.wParam;

}

// Windows и пол&# 747c216h 1091;чает в качестве параметров сообщения

LRESULT CALLBACK WindowFunc HWND hwnd



UINT message,

WPARAM wParam,

LPARAM lParam)

break;

case ID_RESET:

X=Y=0; //

PatBlt(memdc,0,0,maxX,maxY,PATCOPY);

InvalidateRect(hwnd,NULL,1); //

break;

case ID_HELP:

MessageBox(hwnd,"F2: \n"

"F3: сменить шрифт\n"

"F4: с начала экрана",

" ",MB_OK);

break;

}

break;

case WM_PAINT: //

hdc=BeginPaint(hwnd,&paintstruct); // DC

// Теперь копируем растр из памяти на экран

BitBlt(hdc,0,0,maxX,maxY,memdc,0,0,SRCCOPY);

EndPaint(hwnd,&paintstruct); // DC

break;

case WM_DESTROY: // Завершение программы

DeleteDC(memdc); // Удалить виртуальное окно

PostQuitMessage(0);

break;

default:

// Все сообщения, не обрабатываемые в данной

// функции, направляются на обработку по

// умолчанию

return DefWindowProc(hwnd,message,

wParam,lParam);

return 0;

}

Windows




Document Info


Accesari: 1436
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )