7. Вывод информации в окно. Механизм перерисовки окна. Понятие области обновления окна. Операции с областью обновления окна



страница6/21
Дата28.11.2016
Размер2.21 Mb.
Просмотров6138
Скачиваний1
1   2   3   4   5   6   7   8   9   ...   21

8. Принципы построения графической подсистемы ОС Windows. Понятие контекста устройства. Вывод графической информации на физическое устройство. Управление цветом. Палитры цветов. Графические инструменты. Рисование геометрических фигур

Взаимодействие приложения с GDI осуществляется при непременном участии еще одного посредника — так называемого контекста устройства.

Контекст устройства (device context)— это внутренняя структура данных, которая определяет набор графических объектов и ассоциированных с ними атрибутов, а также графических режимов, влияющих на вывод.

В следующем списке приведены основные графические объекты: Перо(реn) для рисования линий. Кисть(brush) для заполнения фона или заливки фигур. Растровое изображение(bitmap) для отображения в указанной области окна. Палитра (palette) для определения набора доступных цветов.Шрифт (font) для вывода текста. Регион(region) для отсечения области вывода.

Если необходимо рисовать на устройстве графического вывода (экране дисплея или принтере), то сначала нужно получить дескриптор контекста устройства. Возвращая этот дескриптор после вызова соответствующих функций, Windows тем самым предоставляет разработчику право на использование данного устройства. После этого дескриптор контекста устройства передается как параметр в функции GDI, чтобы идентифицировать устройство, на котором должно выполняться рисование.

Контекст устройства содержит много атрибутов, определяющих поведение функций GDI. Благодаря этому списки параметров функций GDI содержат только самую необходимую информацию, например начальные координаты или размеры графического объекта. Все остальное система извлекает из контекста устройства. Только если значения по умолчанию не устраивают разработчика, необходимо вызывать функции GDI, изменяющие значения соответствующих атрибутов.

Win32 API поддерживает следующие типы контекстов устройства: контекст дисплея; контекст принтера; контекст в памяти (совместимый контекст); метафайловый контекст; информационный контекст.

Управление цветом:



  • typedef DWORD COLORREF;

  • COLORREF color = RGB(255, 0, 0); // 0x000000FF

  • BYTE GetRValue(DWORD rgb), GetGValue, GetBValue.

  • COLOREF GetNearestColor(HDC, COLORREF);

  • COLORREF SetBkColor(HDC, COLORREF), GetBkColor.

  • LOGPALETTE, CreatePalette, SetPaletteEntries, GetPaletteEntries, SelectPalette, RealizePalette, DeleteObject.

Инструменты для рисования:

  • DC – 1 Bitmap , 1 Region, 1 Pen, 1 Brush, 1 Palette, 1 Font.

  • HPEN – LOGPEN, CreatePenIndirect, CreatePen.

  • HBRUSH – LOGBRUSH, CreateBrushIndirect, CreateBrush.

  • HFONT – LOGFONT, CreateFontIndirect, CreateFont.

  • HANDLE GetStockObject(int);

  • HANDLE SelectObject(HDC, HANDLE);

  • bool DeleteObject(HANDLE);

Вывод на физическое устройство:

Вывод изображений на такое устройство, как принтер, может выполняться с использованием тех же приемов, что и вывод в окно приложения. Прежде всего необходимо получить контекст устройства. Затем можно вызывать функции GDI, выполняющие рисование, передавая им идентификатор полученного контекста в качестве параметра.

В отличие от контекста отображения, контекст физического устройства не получается, а создается, для чего используется функция CreateDC :

HDC WINAPI CreateDC(

LPCSTR lpszDriver, // имя драйвера

LPCSTR lpszDevice, // имя устройства

LPCSTR lpszOutput, // имя файла или порта вывода

const void FAR* lpvInitData); // данные для инициализации

Рисование геометрических фигур

BOOL LineTo( HDC hdc, int nXEnd, int nYEnd );

BOOL MoveToEx(HDC hdc, int X, int Y, LPPOINT lpPoint/*old current position*/);

BOOL Rectangle(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect );

BOOL Ellipse(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);

BOOL Polygon(

HDC hdc, // handle to DC

CONST POINT *lpPoints, // polygon vertices

int nCount // count of polygon vertices

);

BOOL PolyBezier(

HDC hdc, // handle to device context

CONST POINT* lppt, // endpoints and control points

DWORD cPoints // count of endpoints and control points

);



Графические инструменты

Pen – CreatePen,

Brush – CreateSolidBrush,

Font – CreateFont,

Холст – CreateCompatibleDC (?)
Управление цветом.

RGB –формат. Для кодирования цвета используются переменные с типом данных COLORREF, который определен через тип данных UINT.

COLORREF col;

Col = RGB(255,0,0); // в памяти по байтам: 0,B,G,R.

BYTE RedValue;

RedValue=GetRValue(color) //значения составляющих GetGValue, GetBValue

Позволяет иметь более 16 миллионов оттенков.

Далеко не все графические устройства поддерживают такое количество. Если программа устанавливает цвет, который данное устройство воспроизвести не может ОС заменяет этот цвет на ближайший из числа доступных.

COLOREF GetNearestColor(HDC, COLORREF).

HDC поддерживает понятие фона и фонового цвета.

Некоторые функции могут осуществлять предварительную заливку области фоновым цветом (функции вывода текста).

Установка фонового цвета SetBkColor(…), получение GetBkColor().
Палитры цветов.

Для того чтобы создать палитру, приложение должно заполнить структуру LOGPALETTE , описывающую палитру, и массив структур PALETTEENTRY , определяющий содержимое палитры.

Структура LOGPALETTE и указатели на нее определены в файле windows.h:

typedef struct tagLOGPALETTE

{

WORD palVersion;

WORD palNumEntries;

PALETTEENTRY palPalEntry[1];

} LOGPALETTE;

В поле palNumEntries нужно записать размер палитры (количество элементов в массиве структур PALETTEENTRY).

Сразу после структуры LOGPALETTE в памяти должен следовать массив структур PALETTEENTRY, описывающих содержимое палитры:

typedef struct tagPALETTEENTRY

{

BYTE peRed;

BYTE peGreen;

BYTE peBlue;

BYTE peFlags;

} PALETTEENTRY;

typedef PALETTEENTRY FAR* LPPALETTEENTRY;

Поле peFlags определяет тип элемента палитры и может иметь значения NULL, PC_EXPLICIT , PC_NOCOLLAPSE и PC_RESERVED .
Если поле peFlags содержит значение NULL, в полях peRed, peGreen и peBlue находятся RGB-компоненты цвета. В процессе реализации логической палитры для этого элемента используется описанный нами ранее алгоритм.
Если поле peFlags содержит значение PC_EXPLICIT, младшее слово элемента палитры содержит индекс цвета в системной палитре.
Если поле peFlags содержит значение PC_NOCOLLAPSE, в процессе реализации логической палитры данный элемент будет отображаться только на свободную ячейку системной палитры. Если же свободных ячеек нет, используется обычный алгоритм реализации.
Последнее возможное значение для поля peFlags (PC_RESERVED) используется для анимации палитры с помощью функции AnimatePalette . Анимация палитры позволяет динамически вносить изменения в палитру. Такой элемент палитры после реализации не подвергается изменениям при реализации других палитр, он становится зарезервированным.
После подготовки структуры LOGPALETTE и массива структур PALETTEENTRY приложение может создать логическую палитру, вызвав функцию CreatePalette :

HPALETTE WINAPI CreatePalette(const LOGPALETTE FAR* lplgpl);
В качестве параметра следует передать функции указатель на заполненную структуру LOGPALETTE.
Функция возвращает идентификатор созданной палитры или NULL при ошибке.

Выбор палитры в контекст отображения
Созданная палитра перед использованием должна быть выбрана в контекст отображения. Выбор палитры выполняется функцией SelectPalette :

HPALETTE WINAPI SelectPalette(

HDC hdc, HPALETTE hpal, BOOL fPalBack);
Функция выбирает палитру hpal в контекст отображения hdc, возвращая в случае успеха идентификатор палитры, которая была выбрана в контекст отображения раньше. При ошибке возвращается значение NULL.
Указав для параметра fPalBack значение TRUE, вы можете заставить GDI в процессе реализации палитры использовать алгоритм, соответствующий фоновому окну. Если же этот параметр равен FALSE, используется алгоритм для активного окна (т. е. все ячейки системной палитры, кроме зарезервированных для статических цветов, отмечаются как свободные и используются для реализации палитры).

Реализация палитры
Процедура реализации палитры заключается в вызове функции RealizePalette :

UINT WINAPI RealizePalette(HDC hdc);
Возвращаемое значение равно количеству цветов логической палитры, которое удалось отобразить в системную палитру.

Рисование с использованием палитры
Итак, вы создали палитру, выбрали ее в контекст отображения и реализовали. Теперь приложение может пользоваться цветами из созданной палитры. Но как?
Если приложению нужно создать перо или кисть, определить цвет текста функцией SetTextColor или закрасить область функцией FloofFill (т. е. вызвать одну из функций, которой в качестве параметра передается переменная типа COLORREF, содержащая цвет), вы можете вместо макрокоманды RGB воспользоваться одной из следующих макрокоманд:

#define PALETTEINDEX (i) \

((COLORREF)(0x01000000L | (DWORD)(WORD)(i)))

#define PALETTERGB (r,g,b) (0x02000000L | RGB(r,g,b))
Макрокоманда PALETTEINDEX позволяет указать вместо отдельных компонент цвета индекс в логической палитре, соответствующий нужному цвету.
Макрокоманда PALETTERGB имеет параметры, аналогичные знакомой вам макрокоманде RGB, однако работает по-другому.
Если цвет определен с помощью макрокоманды RGB, в режиме низкого и среднего цветового разрешения для рисования будет использован ближайший к указанному статический цвет. В режиме высокого цветового разрешения полученный цвет будет полностью соответствовать запрошенному.
Если же для определения цвета использована макрокоманда PALETTERGB, GDI просмотрит системную палитру и подберет из нее цвет, наилучшим образом соответствующий указанному в параметрах макрокоманды.
В любом случае при работе с палитрой GDI не использует для удовлетворения запроса из логической палитры смешанные цвета.
Какой из двух макрокоманд лучше пользоваться?
На этот вопрос нет однозначного ответа.
Макрокоманда PALETTEINDEX работает быстрее, однако с ее помощью можно использовать только те цвета, которые есть в системной палитре. Если ваше приложение будет работать в режиме True Color, лучшего эффекта можно добиться при использовании макрокоманды PALETTERGB, так как для режимов высокого цветового разрешения эта макрокоманда обеспечит более точное цветовое соответствие.

Удаление палитры
Так как палитра является объектом, принадлежащим GDI, а не создавшему ее приложению, после использования палитры приложение должно обязательно ее удалить. Для удаления логической палитры лучше всего воспользоваться макрокомандой DeletePalette , определенной в файле windowsx.h:

#define DeletePalette(hpal) \

DeleteObject((HGDIOBJ)(HPALETTE)(hpal))
В качестве параметра этой макрокоманде следует передать идентификатор удаляемой палитры.
Учтите, что как и любой другой объект GDI, нельзя удалять палитру, выбранную в контекст отображения. Перед удалением следует выбрать старую палитру, вызвав функцию SelectPalette.
9. Растровые изображения. Виды растровых изображений. Значки и курсоры. Способ вывода растровых изображений с эффектом прозрачного фона. Аппаратно-зависимые и аппаратно-независимые растровые изображения. Операции с растровыми изображениями. Вывод растровых изображений.
Типы растровых изображений:

  • Bitmap – базовый формат растрового изображения.

  • Icon – значок: AND-маска и XOR-маска.

  • Cursor – курсор: две маски и точка касания – Hot Spot.

Значки – это небольшая картинка, ассоциируемая с некоторой программой, файлом на экране. Значок является частным случаем растровых изображений.

На экране значки могут иметь не прямоугольную форму, что достигается за счет описания значка двумя точечными рисунками:

  • AND-mask. Монохромная.

  • XOR-mask. Цветная.

При выводе значков, ОС комбинирует маски по следующему правилу:

Экран = (Экран ANDМонохромная маска)XORЦветная маска.

Накладывая AND-mask, ОС вырезает на экране пустую область с заданным контуром. ВAND-mask фигура кодируется с помощью 0, а прозрачный фон с помощью 1. После вывода AND-mask ОС накладывает XOR-mask, содержащую изображения фигур. Изображение фигуры является цветным. На диске значки сохраняются в *.ico формате. В ОС существует несколько форматов значков, которые отличаются по размеру и цвету (16х16, 32х32, 16х32, 64х64).
Курсоры. Указатели мыши. Небольшой образ. По своему представлению в файле и памяти курсор напоминает значки, но существуют некоторые значки. Курсоры могут быть размером 16х16 и 32х32. Важным существенным отличием является наличие в нем горячей точки (hotspot), которая ассоциируется с позицией указателя мыши на экране. *.CUR.

Точечные рисунки – это изображение, представление графической информации, ориентированное на матричное устройство вывода. Точечный рисунок состоит из пикселей, организованных в матрицу. ОС позволяет использовать точечные рисунки двух видов:

1)Аппаратно-зависимые. Device Dependent Bitmpap. Рассчитаны только на определенный

тип графического адаптера или принтера. Их точки находятся в прямом соответствии с пикселями экрана или другой поверхности отображения.

Если это экран – то информация о пикселях представляется битовыми планами в соответствии с особенностями устройства. Он наименее удобен при операциях с точечным рисунком, но обеспечивает наибольшую скорость графического вывода. Он хорошо подходит для работы с точечными рисунками в оперативной памяти.

При хранении на диске используется аппаратно-независимый формат - BMP,DIB.

2)Аппаратно-независимые. Device Independent Bitmpap. Формат хранения аппаратно-независимых точечных рисунков не зависит от используемой аппаратуры. Здесь информация о цвете и самом изображении хранится раздельно.

Цвета собраны в таблицу, а точки изображения кодируют номера цветов таблицы. Под каждую точку изображения может отводиться 1,4,8,16,24 битов изображения. Они могут храниться на диске в сжатом виде.

Для сжатия применяется алгоритм RunLengthEncoding(RLE). Разжатие производится автоматически. Недостаток: обеспечивается более низкая скорость работы.

Вывод растрового изображения с эффектом прозрачного фона: AND-маска – монохромная. Фигура кодируется нулем, прозрачный фон – единицей. Вырезает на экране «черную дыру» там, где должна быть фигура.

Растровая операция – способ комбинирования пикселей исходного изображения с пикселями поверхности отображения целевого контекста устройства. При масштабировании в сторону сжатия некоторые цвета могут пропадать. При растяжении, таких проблем не существует. При сжатии возможно 3 способа сжатия.

РИСОВАНИЕ ТОЧЕЧНЫХ РИСУНКОВ ПРОГРАММНЫМ СПОСОБОМ

После создания контекста виртуального устройства CreateCompatibleDC() поверхность отображения в этом контексте устройства имеет нулевые размеры. Если в полученном контексте устройства необходимо нарисовать изображение, то сначала необходимо создать в контексте устройства поверхность отображения (точечный рисунок). И установить его в контексте устройства. Для создания рисунка:

HBITMAP CreateCompatibleBitmap(HDC hdc, //handletoDC

int nWidth, // width of bitmap, in pixels

int nHeight// height of bitmap, in pixels

);

После вызова этой функции нужно не забыть вызвать SelectObject. Созданный точечный рисунок –DDB. Часто при работе с изображениями (растровыми) применяется:

BOOL PatBlt(

HDC hdc, // handle to DC

int nXLeft, // x-coord of upper-left rectangle corner

int nYLeft, // y-coord of upper-left rectangle corner

int nWidth, // width of rectangle

int nHeight, // height of rectangle

DWORD dwRop// raster operation code

);

Она служит для заливки битового образа некоторым цветом. Цвет определяется цветом кисти.

XOR-маска – цветная. Фигура кодируется цветом, прозрачный фон – нулем. Врезает на экране фигуру на месте «черной дыры».

LoadIcon(),LoadCursor(),LoadBitmap() – не загружают изображение из файла. Изображения из файла загружает функция LoadImage().В результате загрузки изображения, ОС возвращает дескриптор созданного в памяти объекта. После использования объект должен быть удален функцией:

Функция HBITMAP LoadBitmap(HINSTANCE hInstance, LPCTSTR lpBitmapName) загpужает поименованный pесуpс каpты бит.

Функция HANDLE LoadImage(HINSTANCE hinst, LPCTSTR lpszName, UINT uType, int cxDesired, int cyDesired, UINT fuLoad) загружает значок, курсор, "живой " курсор или точечный рисунок.

Функция HANDLE CopyImage(HANDLE hImage, UINT uType, int cxDesired, int cyDesired, UINT fuFlags) создает новое изображение (значок, курсор, или точечный рисунок) и копирует атрибуты указанного изображения в новое изображение. Если необходимо, функция растягивает биты, чтобы размер нового изображения подогнать под требуемый.

Функция BOOL DrawIcon(HDC hDC, int X, int Y, HICON hIcon) делает иконой в области клиента окна определенного контекста устройства.

Вывести Bitmap вызовом одной функции нельзя. Необходимо создать дополнительное устройство в памяти – memory DC, выбрать в нем Bitmap в качестве поверхности рисования, выполнить перенос изображения из memory DC в window DC.

Вывод растрового изображения:

void ShowBitmap(HWND hWnd, HBITMAP hBmp)

{

HDC winDC = GetDC(hWnd);

HDC memDC = CreateCompatibleDC(winDC);

HBITMAP oldBmp = SelectObject(memDC, hBmp);

BitBlt(winDC, 10, 10, 64, 64, memDC, 0, 0, SRCCOPY);

SelectObject(memDC, oldBmp);

DeleteDC(memDC);

ReleaseDC(hWnd, winDC);

}

10. Библиотека работы с двумерной графикой Direct2D. Инициализация библиотеки. Фабрика графических объектов библиотеки Direct2D. Вывод графики средствами библиотеки Direct2D.

Для удовлетворения новых потребностей рынка IT-техноолгий корпорация Microsoft летом 2009 года разработала на базе технологии DirectX 10 набор библиотек для работы и вывода двумерной графики — Direct2D.

Direct2D включает в себя 4 заголовочных файла и одну библиотеку:

. d2d1.h — содержит объявления основных функций Direct2D API на языке С и С++;

. d2d1helper.h — содержит вспомогательный структуры, классы, функции;

. d2dbasetypes.h — определяет основные примитивы Direct2D, включен в d2d1.h;

. d2derr.h — определяет коды ошибок Direct2D. Включен в d2d1.h;

. d2d1.lib — двоичная библиотека, содержащая все объявленные в заголовочных файлах функции.

Как и DirectX, Direct2D построен на модели COM. Основным объектом, который предоставляет интерфейсы для создания других объектов, является Фабрика Direct2D, или объект класса ID2D1Factory. Он имеет в своем составе методы типа CreateResourse, которые позволяют создавать объекты более специфических типов.

Все объекты (ресурсы) в Direct2D делятся на два больших типа — устройство-зависимые (device-dependent) и устройство-независимые (device-independent). Устройство-зависимые объекты ассоциируются с конкретным устройством вывода и должны быть реинициализированы каждый раз, когда устройство, с которым они ассоциируются, требует реинициализации. Устройство-независимые ресурсы существуют без привязки к какому-либо устройству и уничтожаются в конце жизненного цикла программы или по желанию программиста. Классификация и основные примеры ресурсов приведены на рисунке 1.



Рисунок 1 — Классификация ресурсов Direct2D.



Объекты класса ID2DRenderTarget — это устройство-зависимые объекты, которые ассоциируются с конкретным устройством вывода. Это может быть конкретное окно приложения, битовый образ (изображение) или другое устройство. ID2DRenderTarget имеет в своем составе методы BeginDraw() и EndDraw(), между которыми выполняются все операции вывода графической информации на устройство вывода.



В качестве инструмента вывода используются объекты класса ID2DBrush, которые задают цвет и другие парамеиры выводимых объектов (в т.ч. градиентные заливки). И ID2DBrush, и ID2DRenderTarget — устройство-зависимые ресурсы и будучи созданными однажды для конкретного устройства, могут применяться лишь к нему, и должны быть уничтожены всякий раз, когда уничтожается их устройство.

Объект класса ID2DGeometry — устройство-независимый ресурс. Будучи созданным однажды, он может быть использован любым объектов ID2DRenderTarget. ID2DGeometry задает двумерную форму, интерполированную треугольниками.



После того, как работа с ресурсами и объектами завершена, они должны быть уничтожены функцией Release(), которая унаследована ими от базового COM-объекта. При этом по возможности стоит избегать частого создания и освобождения ресурсов, так как этот процесс требует достаточно много ресурсов процессора. Общая схема работы с Direct2D представлена на рисунке 2.

article4_2.jpg



Рисунок 2 — Общая схема использования компонент Direct2D

11. Вывод текста в ОС Windows. Понятие шрифта. Характеристики шрифта. Понятия физического и логического шрифта. Операции с физическими шрифтами. Операции с логическими шрифтами. Параметры ширины и высоты логического шрифта.

1) BOOL TextOut

Функция TextOut записывает строку символов в заданном месте, используя текущий выбранный шрифт, цвет фона и цвет текста.

Если функция завершается с ошибкой, величина возвращаемого значения – ноль, иначе – не ноль.

SetTextAlign - устанавливает флажки выравнивания текста для заданного контекста устройства.

GetTextAlign - извлекает настройки выравнивания текста для заданного контекста устройства.

SetTextColor - функция устанавливает цвет текста для заданного контекста устройства.

GetTextColor - функция возвращает цвет текста для заданного контекста устройства.

2) BOOL ExtTextOut

Выводит текст используя текущий выбранный шрифт, цвета фона и текста.

Если строка рисуется, возвращаемое значение является отличным от нуля.

3) BOOL PolyTextOut

рисует несколько строк, используя шрифт и цвета текста, в настоящее время выбранные в заданном контексте устройства. При ошибке – 0, иначе – не ноль.

4)LONG TabbedTextOut

Пишет строку символов в заданном месте, разворачивая позиции табуляции в значения, указанные в массиве позиций табуляции. Текст пишется в текущем выбранном шрифте, цвете фона и цвете текста.

Если функция завершается ошибкой, возвращаемое значение – нуль.

5) int DrawText

Рисует отформатированный текст в заданном прямоугольнике. Если функция завершается успешно, возвращаемое значение - высота текста в логических единицах измерения.

6) int DrawTextEx

Рисует форматированный текст в заданном прямоугольнике.

Если функция завершается с ошибкой, величина возвращаемого значения - ноль.

Шрифт – множество символов со сходными размерами и начертанием контуров. Семейство шрифта – набор шрифтов со сходной шириной символов и гарнитурой:

Шрифты в программе:

Физические – устанавливаемые в операционную систему, файлы.

Логические – запрашиваемые программой у операционной системы, LOGFONT.

Физический шрифт

Установка шрифта:

Скопировать файл шрифта в C:\Windows\Fonts.

Вызвать int AddFontResource(LPCTSTR lpszFilename).

Вызвать SendMessage с кодом WM_FONTCHANGE.

Удаление шрифта:

Вызвать bool RemoveFontResource(LPCTSTR lpszFilename).

Удалить файл шрифта из C:\Windows\Fonts.

Вызвать SendMessage с кодом WM_FONTCHANGE.

Логический шрифт

Создание логического шрифта (LOGFONT):

CreateFontIndirect / CreateFont,

SelectObject,

DeleteObject.

В ширине шрифта различают 3 вида размеров:

Размер А – отступ слева перед написанием символа

Размер В – ширина символа

Размер С – отступ справа от символа

Отступы А и С могут быть отрицательными (когда символ пишется курсивом). Получить значения А,В,С можно с помощью функций:

GetCharABCWidth– только дляTrueTypeFont

GetCharABCWidthFloat

GetCharWidth32

GetCharWidthFloat

Функции для высоты и ширины:

GetTextExtentPoint32

TabbedTextExtent– если есть табуляция. Функция для расчета переноса слов.

GetTextExtentPoint

Ascent – параметр шрифта, называющийся подъемом.

Descent – спуск.

LineGap – пропуск между строками.

Для того, что бы получить все параметры шрифта, необходимо обратиться к одной из двух функций, которые возвращают параметры физического шрифта. Существует 2 уровня представления шрифта:

Высокоуровневый логический – соответствует структура LOGFONT

Низкоуровневый физический – структуры TEXTMETRICS, OUTLINETEXTMETRICS.

Префиксы:

Tm – TEXTMETRICS

Otm – OUTLINETEXTMETRICS

Физические параметры шрифта можно получить с помощью:

GetTextMetrics

GetOutLineTextMetrics

Параметры подъем и спуск шрифта имеют различный смысл:

Существуют пропорциональные и непропорциональные шрифты. Шрифт, который мы создаем – логический.

Физический шрифт – это шрифт, расположенный в каталоге Fonts.

ОС на базе физического создает необходимый нам логический.

Существуют 2 типа шрифтов:

Растровые (масштабируемые шрифты TrueType)

Векторные (в чистом виде в Windows таких нет)

Масштабируемые шрифты TrueType описываются сплайнами 3 порядка.PostScript– описываются сплайнами 2ого порядка.

Сплайны третьего порядка позволяют более тонко управлять шрифтом.



Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7   8   9   ...   21


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал