TX Library Help – Version: 00173a, Revision: 105
 ALL  Windows graphics in a sandbox

Рисование

Инициализация библиотеки

HWND txCreateWindow (double sizeX, double sizeY, bool centered=true)
 Создание окна рисования
HDC & txDC ()
 Возвращает холст (дескриптор контекста рисования, HDC), связанный с окном TXLib.
bool txSetDefaults (HDC dc=txDC())
 Установка параметров рисования по умолчанию.
bool txOK ()
 Проверка правильности работы библиотеки
POINT txGetExtent (HDC dc=txDC())
 Возвращает размер окна или холста в виде структуры POINT.
int txGetExtentX (HDC dc=txDC())
 Возвращает ширину окна или холста.
int txGetExtentY (HDC dc=txDC())
 Возвращает высоту окна или холста.
HWND txWindow ()
 Возвращает дескриптор окна рисования
const char * txVersion ()
 Возвращает строку с информацией о текущей версии библиотеки.
unsigned txVersionNumber ()
 Возвращает номер версии библиотеки.
const char * txGetModuleFileName (bool fileNameOnly=true)
 Возвращает имя исполняемого файла или изначальный заголовок окна TXLib.

Установка цветов и режимов рисования

enum  txColors {
  TX_BLACK = RGB ( 0, 0, 0),
  TX_BLUE = RGB ( 0, 0, 128),
  TX_GREEN = RGB ( 0, 128, 0),
  TX_CYAN = RGB ( 0, 128, 128),
  TX_RED = RGB (128, 0, 0),
  TX_MAGENTA = RGB (128, 0, 128),
  TX_BROWN = RGB (128, 128, 0),
  TX_ORANGE = RGB (255, 128, 0),
  TX_GRAY = RGB (160, 160, 160),
  TX_DARKGRAY = RGB (128, 128, 128),
  TX_LIGHTGRAY = RGB (192, 192, 192),
  TX_LIGHTBLUE = RGB ( 0, 0, 255),
  TX_LIGHTGREEN = RGB ( 0, 255, 128),
  TX_LIGHTCYAN = RGB ( 0, 255, 255),
  TX_LIGHTRED = RGB (255, 0, 128),
  TX_LIGHTMAGENTA = RGB (255, 0, 255),
  TX_PINK = RGB (255, 128, 255),
  TX_YELLOW = RGB (255, 255, 128),
  TX_WHITE = RGB (255, 255, 255),
  TX_TRANSPARENT = 0xFFFFFFFF,
  TX_NULL = TX_TRANSPARENT,
  TX_HUE = 0x04000000,
  TX_SATURATION = 0x05000000,
  TX_LIGHTNESS = 0x06000000
}
 

Названия предопределенных цветов.

Подробнее...
COLORREF RGB (int red, int green, int blue)
 Создает (смешивает) цвет из трех базовых цветов (компонент).
HPEN txSetColor (COLORREF color, double thickness=1, HDC dc=txDC())
 Устанавливает текущий цвет и толщину линий, цвет текста.
COLORREF txGetColor (HDC dc=txDC())
 Возвращает текущий цвет линий и текста.
HBRUSH txSetFillColor (COLORREF color, HDC dc=txDC())
 Устанавливает текущий цвет заполнения фигур.
COLORREF txGetFillColor (HDC dc=txDC())
 Возвращает текущий цвет заполнения фигур.
unsigned txExtractColor (COLORREF color, COLORREF component)
 Извлекает цветовую компоненту (цветовой канал) из смешанного цвета.
COLORREF txRGB2HSL (COLORREF rgbColor)
 Преобразует цвет из формата RGB в формат HSL.
COLORREF txHSL2RGB (COLORREF hslColor)
 Преобразует цвет из формата HSL в формат RGB.

Рисование фигур

bool txClear (HDC dc=txDC())
 Стирает холст текущим цветом заполнения.
bool txSetPixel (double x, double y, COLORREF color, HDC dc=txDC())
 Рисует пиксель (точку на экране).
COLORREF txGetPixel (double x, double y, HDC dc=txDC())
 Возвращает текущий цвет точки (пикселя) на экране.
bool txLine (double x0, double y0, double x1, double y1, HDC dc=txDC())
 Рисует линию.
bool txRectangle (double x0, double y0, double x1, double y1, HDC dc=txDC())
 Рисует прямоугольник.
bool txPolygon (const POINT points[], int numPoints, HDC dc=txDC())
 Рисует ломаную линию или многоугольник.
bool txEllipse (double x0, double y0, double x1, double y1, HDC dc=txDC())
 Рисует эллипс.
bool txCircle (double x, double y, double r)
 Рисует окружность или круг.
bool txArc (double x0, double y0, double x1, double y1, double startAngle, double totalAngle, HDC dc=txDC())
 Рисует дугу эллипса.
bool txPie (double x0, double y0, double x1, double y1, double startAngle, double totalAngle, HDC dc=txDC())
 Рисует сектор эллипса.
bool txChord (double x0, double y0, double x1, double y1, double startAngle, double totalAngle, HDC dc=txDC())
 Рисует хорду эллипса.
bool txFloodFill (double x, double y, COLORREF color=TX_TRANSPARENT, DWORD mode=FLOODFILLSURFACE, HDC dc=txDC())
 Заливает произвольный контур текущим цветом заполнения.
bool txTriangle (double x1, double y1, double x2, double y2, double x3, double y3)
 Функция, которая должна бы рисовать треугольник.
void txDrawMan (int x, int y, int sizeX, int sizeY, COLORREF color, double handL, double handR, double twist, double head, double eyes, double wink, double crazy, double smile, double hair, double wind)
 Рисует человечка.

Работа с текстом

bool txTextOut (double x, double y, const char text[], HDC dc=txDC())
 Рисует текст.
bool txDrawText (double x0, double y0, double x1, double y1, const char text[], unsigned format=DT_CENTER|DT_VCENTER|DT_WORDBREAK|DT_WORD_ELLIPSIS, HDC dc=txDC())
 Рисует текст, размещенный в прямоугольной области.
HFONT txSelectFont (const char name[], double sizeY, double sizeX=-1, int bold=FW_DONTCARE, bool italic=false, bool underline=false, bool strikeout=false, double angle=0, HDC dc=txDC())
 Выбирает текущий шрифт.
SIZE txGetTextExtent (const char text[], HDC dc=txDC())
 Вычисляет размеры текстовой надписи.
int txGetTextExtentX (const char text[], HDC dc=txDC())
 Вычисляет ширину текстовой надписи.
int txGetTextExtentY (const char text[], HDC dc=txDC())
 Вычисляет высоту текстовой надписи.
unsigned txSetTextAlign (unsigned align=TA_CENTER|TA_BASELINE, HDC dc=txDC())
 Устанавливает текущее выравнивание текста.
LOGFONT * txFontExist (const char name[])
 Ищет шрифт по его названию.

Рисование в памяти (на "виртуальном холсте") и загрузка изображений

HDC txCreateCompatibleDC (double sizeX, double sizeY, HBITMAP bitmap=NULL)
 Создает дополнительный холст (контекст рисования, Device Context, DC) в памяти.
HDC txCreateDIBSection (double sizeX, double sizeY, RGBQUAD **pixels=NULL)
 Создает аппаратно-независимый дополнительный холст (контекст рисования, Device Context, DC) в памяти с возможностью прямого доступа к нему как к массиву.
HDC txLoadImage (const char filename[], unsigned imageFlags=IMAGE_BITMAP, unsigned loadFlags=LR_LOADFROMFILE)
 Загружает из файла изображение в формате BMP. Делает это довольно медленно.
bool txDeleteDC (HDC dc)
 Уничтожает холст (контекст рисования, DC) в памяти.
bool txBitBlt (HDC destImage, double xDest, double yDest, double width, double height, HDC sourceImage, double xSource=0, double ySource=0)
 Копирует изображение с одного холста (контекста рисования, DC) на другой.
bool txBitBlt (double xDest, double yDest, HDC sourceImage, double xSource=0, double ySource=0)
 Копирует изображение на экран.
bool txTransparentBlt (HDC destImage, double xDest, double yDest, double width, double height, HDC sourceImage, double xSource=0, double ySource=0, COLORREF transColor=TX_BLACK)
 Копирует изображение с одного холста (контекста рисования, DC) на другой с учетом прозрачности.
bool txTransparentBlt (double xDest, double yDest, HDC sourceImage, COLORREF transColor=TX_BLACK)
 Копирует изображение на экран с учетом прозрачности.
bool txAlphaBlend (HDC destImage, double xDest, double yDest, double width, double height, HDC sourceImage, double xSource=0, double ySource=0, double alpha=1.0)
 Копирует изображение с одного холста (контекста рисования, DC) на другой с учетом полупрозрачности.
bool txAlphaBlend (double xDest, double yDest, HDC sourceImage, double alpha=1.0)
 Копирует изображение на экран с учетом полупрозрачности.
HDC txUseAlpha (HDC dc)
 Пересчитывает цвета пикселей с учетом прозрачности (переводит цвета в формат Premultiplied Alpha).
bool txSaveImage (const char filename[], HDC dc=txDC())
 Сохраняет в файл изображение в формате BMP.

Вспомогательные функции

double txSleep (double time=0)
 Задерживает выполнение программы на определенное время.
void txRedrawWindow ()
 Обновляет изображение в окне TXLib вручную.
int txBegin ()
 Блокирует обновление изображения окна, во избежание мигания.
int txEnd ()
 Разблокирует обновление окна, заблокированное функцией txBegin().
bool txDestroyWindow ()
 Уничтожает окно TXLib.
double txQueryPerformance ()
 Оценивает скорость работы компьютера.
double txGetFPS (unsigned minFrames=0)
 Выдает количество кадров (вызовов этой функции) в секунду.
int txUpdateWindow (int update=true)
 Разрешает или запрещает автоматическое обновление изображения в окне.
bool txSelectObject (HGDIOBJ obj, HDC dc=txDC())
 Устанавливает текущий активный объект GDI.
bool txIDontWantToHaveAPauseAfterMyProgramBeforeTheWindowWillClose_AndIWillNotBeAskingWhereIsMyPicture ()
 Делает нечто иногда удобное. См. название функции.

Функции консоли

bool txSetConsoleAttr (unsigned colors=0x07)
 Устанавливает цветовые атрибуты консоли.
unsigned txGetConsoleAttr ()
 Возвращает текущие цветовые атрибуты консоли.
bool txClearConsole ()
 Стирает текст консоли.
POINT txSetConsoleCursorPos (double x, double y)
 Устанавливает позицию мигающего курсора консоли.
POINT txGetConsoleCursorPos ()
 Возвращает позицию мигающего курсора консоли.
POINT txGetConsoleFontSize ()
 Возвращает размеры шрифта консоли.
bool txTextCursor (bool blink=true)
 Запрещает или разрешает рисование мигающего курсора в окне.

Перечисления

enum txColors

Названия предопределенных цветов.

См. TX_BLACK, TX_BLUE и другие цвета в списке выше.

Если кому-то эти цвета не нравятся (что неудивительно), всегда можно сделать свои с помощью RGB(). См. пример ниже.

См. также:
txSetColor(), txSetFillColor(), txGetColor(), txGetFillColor(), txGetPixel(), RGB()
Примеры использования:
          #include "TXLib.h"

          const COLORREF MY_DEEP_ROMANTIC_BLUE = RGB (  0,   0, 129),
                         MY_SHINING_MOONLIGHT  = RGB (128, 255,  64);
          ...

          txSetColor     (TX_RED);
          txSetFillColor (TX_NULL);

          txSetFillColor (MY_DEEP_ROMANTIC_BLUE);  // А.И. Куинджи, "Лунная ночь на Днепре"
          txSetColor     (MY_SHINING_MOONLIGHT);   // http://tanais.info/art/pic/kuindzhi1.html
Элементы перечислений:
TX_BLACK 

Черный цвет.

TX_BLUE 

Темно-синий цвет. Плохо виден.

TX_GREEN 

Зеленый цвет.

TX_CYAN 

Бирюзовый цвет.

TX_RED 

Темно-красный цвет. Слишком темный.

TX_MAGENTA 

Темно-малиновый цвет.

TX_BROWN 

Коричневый цвет. Некрасивый. Do it yourself with RGB().

TX_ORANGE 

Оранжевый цвет.

TX_GRAY 

Серый цвет.

TX_DARKGRAY 

Темно-серый цвет.

TX_LIGHTGRAY 

Светло-серый цвет.

TX_LIGHTBLUE 

Светло-синий цвет.

TX_LIGHTGREEN 

Светло-зеленый цвет.

TX_LIGHTCYAN 

Светло-бирюзовый цвет.

TX_LIGHTRED 

Светло-красный цвет. Не самого лучшего оттенка.

TX_LIGHTMAGENTA 

Светло-малиновый цвет. Еще менее лучшего оттенка.

TX_PINK 

Розовый гламурный :)

TX_YELLOW 

Желтый цвет.

TX_WHITE 

Белый цвет.

TX_TRANSPARENT 

Прозрачный цвет. Отключает рисование.

TX_NULL 

Прозрачный цвет. Отключает рисование.

TX_HUE 

Цветовой тон цвета в модели HSL.

TX_SATURATION 

Насыщенность цвета в модели HSL.

TX_LIGHTNESS 

Светлота цвета в модели HSL.

См. определение в файле TXLib.h строка 1063


Функции

HWND txCreateWindow ( double  sizeX,
double  sizeY,
bool  centered = true 
)

Создание окна рисования

Аргументы:
sizeXРазмер окна по горизонтали (в пикселях).
sizeYРазмер окна по вертикали (в пикселях).
centeredЦентрирование окна на дисплее. Необязательно. Если не указано, то окно центрируется.
Возвращает:
Дескриптор (системный номер) окна TXLib. Если окно не создано, возвращается NULL.
Заметки:
Устанавливаются параметры рисования по умолчанию, см. функцию txSetDefaults().
Предупреждения:
Если используется многофайловый проект (с раздельной компиляцией), то графические функции TXLib, вызванные из файла проекта, будут работать только с тем окном, которое создано в этом же файле проекта. Если проект состоит, скажем, из файлов main.cpp и game.cpp, и в файле main.cpp создается графическое окно, то функции из game.cpp не смогут рисовать в нем. (Однако game.cpp сможет создать свое собственное окно.)
Если такой программе нужно одно окно, то в проект следует включить файл, ответственный за рисование, скажем, graphics.cpp, и выводить графику только через функции этого файла. Такой файл (или библиотеку) в больших проектах часто называют графическим движком.

То же касается и использования TXLib в DLL.
Заметки:
Вспомогательные окна могут создаваться по одному на каждый файл многофайлового проекта или загруженную DLL. Для закрытия вспомогательных окон используется txDestroyWindow(). Для закрытия главного надо выйти из main().
Предупреждения:
Одновременное создание нескольких окон не потокобезопасно (not thread-safe).

Многооконная программа на TXLib тормозит, да и однооконная тоже не отличается высокой скоростью. Чтобы избавиться от этого, бросьте TXLib и используйте другие оконные библиотеки: Qt, wxWidgets, GTK+ и т.д., или библиотеки, специально разработанные для создания игр: SFML (она простая), SDL и другие. Вы можете написать и свою собственную оконную библиотеку, основанную на OpenGL   и получится SFML или SDL:),   или DirectX. Помните, что цель TXLib -- облегчить первые шаги, но потом стать ненужной.
См. также:
txOK(), txWindow(), txDC(), _txWindowStyle, _txConsoleMode, _txConsoleFont, _txCursorBlinkInterval, _txWindowUpdateInterval, _TX_NOINIT, _TX_ALLOW_TRACE, TX_TRACE
Примеры использования:
          txCreateWindow ( 800, 600);         // Окно  800х600,    центрировано
          txCreateWindow (1024, 768, false);  // Окно 1024х768, не центрировано
HDC& txDC ( ) [inline]

Возвращает холст (дескриптор контекста рисования, HDC), связанный с окном TXLib.

Возвращает:
Дескриптор (системный номер, handler) контекста рисования (device context, DC) холста (HDC).
Заметки:
Возвращаемый дескриптор -- не оконный контекст рисования окна TXLib. TXLib реализует двойную буферизацию. Все рисовательные действия происходят со скрытым HDC, находящемся в памяти, и его содержимое периодически автоматически копируется на экран. Это иногда приводит к мерцанию. Автоматическое копирование можно выключить функцией txBegin() и обратно включить функцией txEnd(), в этом случае содержимое окна можно перерисовать функциями txRedrawWindow() или txSleep().

Дополнительную информацию об автоматическом обновлении см. в функциях txBegin(), txEnd(), txUpdateWindow(), txRedrawWindow() и txSleep().

Заметки:
Этот HDC возвращается в виде ссылки, что позволяет подменить его. Тогда TXLib будет периодически копировать на экран изображение уже из вашего буфера. Перед подменой надо сохранить старый дескриптор или освободить его с помощью txDeleteDC(). Во время подмены рисование должно быть заблокировано с помощью txLock() и после разблокировано с помощью txUnlock().
См. также:
txWindow(), txBegin(), txEnd(), txLock(), txUnlock(), txGDI()
Примеры использования:
          txBitBlt (txDC(),   0,   0, 100, 100, txDC(), 0, 0);
          txBitBlt (txDC(), 100,   0, 100, 100, txDC(), 0, 0);
          txBitBlt (txDC(), 0,   100, 100, 100, txDC(), 0, 0);
          txBitBlt (txDC(), 100, 100, 100, 100, txDC(), 0, 0);
bool txSetDefaults ( HDC  dc = txDC())

Установка параметров рисования по умолчанию.

Аргументы:
dcДескриптор контекста рисования (холста) для установки параметров. Необязателен.
Возвращает:
Если операция была успешна -- true, иначе -- false.
Параметры по умолчанию:
  • Линии -- цвет белый (TX_WHITE), толщина 1
  • Заливка -- цвет белый (TX_WHITE)
  • Шрифт -- Системный, цвет белый (TX_WHITE)
  • Растровая операция -- копирование цвета (R2_COPYPEN)
См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txSelectFont()
Примеры использования:
bool txOK ( ) [inline]

Проверка правильности работы библиотеки

Возвращает:
Состояние библиотеки: true -- библиотека в порядке, false -- не в порядке.

"Библиотека не в порядке" означает, что ее внутренние данные неверны. Самая простая причина - не открыто окно, однако могут быть и другие проблемы.

См. также:
txCreateWindow()
Примеры использования:
          txCreateWindow (800, 600);
          if (!txOK())
              {
              txMessageBox ("Не смогла создать окно", "Извините", MB_ICONSTOP);
              return;
              }
POINT txGetExtent ( HDC  dc = txDC()) [inline]

Возвращает размер окна или холста в виде структуры POINT.

Аргументы:
dcДескриптор контекста рисования (холста), размеры которого возвращаются. Необязателен. Если не указан или равен txDC(), возвращаются размеры окна TXLib.
Возвращает:
Размер окна рисования в виде структуры POINT, содержащей компоненты x и y.
Заметки:
Если окно не создано, возвращается размер экрана.
См. также:
txGetExtentX(), txGetExtentY()
Примеры использования:
          POINT size = txGetExtent();

          txLine (0, 0,      size.x, size.y);
          txLine (0, size.y, size.x, 0);
int txGetExtentX ( HDC  dc = txDC()) [inline]

Возвращает ширину окна или холста.

Аргументы:
dcДескриптор контекста рисования (холста), ширина которого возвращается. Необязателен. Если не указан или равен txDC(), возвращаются ширина окна TXLib.
Возвращает:
Ширина окна рисования.
Заметки:
Если окно не создано, возвращается ширина экрана.
См. также:
txGetExtent(), txGetExtentY()
Примеры использования:
          txSetTextAlign (TA_CENTER);
          txTextOut (txGetExtentX() / 2, 100, "Oh, oh, you're in the [army]middle now");
int txGetExtentY ( HDC  dc = txDC()) [inline]

Возвращает высоту окна или холста.

Аргументы:
dcДескриптор контекста рисования (холста), высота которого возвращается. Необязателен. Если не указан или равен txDC(), возвращается высота окна TXLib.
Возвращает:
Высота окна рисования.
Заметки:
Если окно не создано, возвращается высота экрана.
См. также:
txGetExtent(), txGetExtentX()
Примеры использования:
          void DrawHouse (int height);
          ...
          DrawHouse (txGetExtentY() / 2);
HWND txWindow ( ) [inline]

Возвращает дескриптор окна рисования

Возвращает:
Дескриптор (системный номер, handler) окна холста.
См. также:
txDC(), txLock(), txUnlock(), txGDI()
Примеры использования:
          SetWindowText (txWindow(), "Новые заголовки -- теперь и в ваших окнах!");
          txMessageBox ("Распишитесь", "Получите", MB_ICONINFORMATION);
COLORREF RGB ( int  red,
int  green,
int  blue 
)

Создает (смешивает) цвет из трех базовых цветов (компонент).

Аргументы:
redКоличество красного цвета в интервале [0; 255].
greenКоличество зеленого цвета в интервале [0; 255].
blueКоличество синего цвета в интервале [0; 255].
Возвращает:
Созданный цвет в формате COLORREF.
См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txExtractColor(), txRGB2HSL(), txHSL2RGB()
Примеры использования:
          txSetColor (RGB (255, 128, 0));                // Красный + половина зеленого = оранжевый

          int red = 20, green = 200, blue = 20;
          COLORREF color = RGB (red, green, blue);
          txSetFillColor (color);

          const COLORREF SKY_COLOR = RGB (0, 128, 255);  // Создаем константу для нового цвета

          ...
          txSetFillColor (SKY_COLOR);                    // Используем ее
HPEN txSetColor ( COLORREF  color,
double  thickness = 1,
HDC  dc = txDC() 
)

Устанавливает текущий цвет и толщину линий, цвет текста.

Аргументы:
colorЦвет линий и текста, см. txColors, RGB().
thicknessТолщина линий. Необязательна. Если не указана, то 1 пиксель.
dcДескриптор контекста рисования (холста) для установки цвета. Необязателен.
Возвращает:
Перо, созданное при установке цвета. При ошибке возвращается NULL.
См. также:
txSetFillColor(), txGetColor(), txGetFillColor(), txColors, RGB()
Примеры использования:
          txSetColor (TX_RED);
          txSetColor (RGB (255, 128, 0), 5);

          txSetColor (RGB (255, 255, 0));   // Красный + зеленый = желтый
          txSetColor (RGB (255, 128, 64));  // Нечто оранжевое
COLORREF txGetColor ( HDC  dc = txDC())

Возвращает текущий цвет линий и текста.

Аргументы:
dcДескриптор контекста рисования (холста) для возврата цвета. Необязателен.
Возвращает:
Текущий цвет линий и текста, см. txColors, RGB().
См. также:
txSetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB()
Примеры использования:
          COLORREF color = txGetColor();
HBRUSH txSetFillColor ( COLORREF  color,
HDC  dc = txDC() 
)

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

Аргументы:
colorЦвет заполнения, см. txColors, RGB().
dcДескриптор контекста рисования (холста) для установки цвета. Необязателен.
Возвращает:
Кисть, созданная при установке цвета. При ошибке возвращается NULL.
См. также:
txSetColor(), txGetFillColor(), txGetColor(), txColors, RGB()
Примеры использования:
          txSetFillColor (TX_RED);
          txSetFillColor (RGB (255, 128, 0));
COLORREF txGetFillColor ( HDC  dc = txDC())

Возвращает текущий цвет заполнения фигур.

Аргументы:
dcДескриптор контекста рисования (холста) для возврата цвета. Необязателен.
Возвращает:
Текущий цвет заполнения фигур, см. txColors, RGB().
См. также:
txSetFillColor(), txSetColor(), txGetColor(), txColors, RGB()
Примеры использования:
          COLORREF color = txGetFillColor();
unsigned txExtractColor ( COLORREF  color,
COLORREF  component 
)

Извлекает цветовую компоненту (цветовой канал) из смешанного цвета.

Аргументы:
colorСмешанный цвет.
componentИзвлекаемая компонента, см. txColors.
Возвращает:
Цветовая компонента, см. txColors.
См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txExtractColor(), txRGB2HSL(), txHSL2RGB()
Примеры использования:
          int red       = txExtractColor (color, TX_RED);
          int lightness = txExtractColor (TX_BLUE, TX_LIGHTNESS);

          Другие примеры см. в функциях AppearText(), AppearEarth() Примера 5 ("Циклы").
COLORREF txRGB2HSL ( COLORREF  rgbColor)

Преобразует цвет из формата RGB в формат HSL.

Аргументы:
rgbColorПреобразуемый цвет в формате   ЕГЭ   RGB.
Возвращает:
Созданный цвет в виде COLORREF.

Формат RGB определяется как

  • Красная компонента цвета (Red), от 0 до 255.
  • Зеленая компонента цвета (Green), от 0 до 255.
  • Синяя компонента цвета (Blue), от 0 до 255.

Формат HSL определяется как

  • Цветовой тон (Hue), от 0 до 255 (не до 360).
  • Насыщенность (Saturation), от 0 до 255.
  • Светлота (Lightness), от 0 до 255.
См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txExtractColor(), txRGB2HSL(), txHSL2RGB()
Примеры использования:
          COLORREF hslColor = txRGB2HSL (TX_RED);
COLORREF txHSL2RGB ( COLORREF  hslColor)

Преобразует цвет из формата HSL в формат RGB.

Аргументы:
hslColorПреобразуемый цвет в формате HSL.
Возвращает:
Созданный цвет в виде COLORREF.

Формат RGB определяется как

  • Красная компонента цвета (Red), от 0 до 255.
  • Зеленая компонента цвета (Green), от 0 до 255.
  • Синяя компонента цвета (Blue), от 0 до 255.

Формат HSL определяется как

  • Цветовой тон (Hue), от 0 до 255 (не до 360).
  • Насыщенность (Saturation), от 0 до 255.
  • Светлота (Lightness), от 0 до 255.
См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txExtractColor(), txRGB2HSL(), txHSL2RGB()
Примеры использования:
          int hue = 10, saturation = 128, lightness = 128;
          COLORREF hslColor = RGB (hue, saturation, lightness);
          txSetColor (txHSL2RGB (hslColor));
bool txClear ( HDC  dc = txDC())

Стирает холст текущим цветом заполнения.

Аргументы:
dcДескриптор контекста рисования (холста) для стирания. Необязателен.
Возвращает:
Если операция была успешна -- true, иначе -- false.
См. также:
txSetFillColor(), txGetFillColor(), txColors, RGB()
Примеры использования:
          txSetFillColor (TX_BLUE);  // Кто-то хотел синий фон?
          txClear();
bool txSetPixel ( double  x,
double  y,
COLORREF  color,
HDC  dc = txDC() 
) [inline]

Рисует пиксель (точку на экране).

Аргументы:
xX-координата точки.
yY-координата точки.
colorЦвет точки, см. txColors, RGB().
dcДескриптор контекста рисования (холста) для рисования. Необязателен.
Возвращает:
Если операция была успешна -- true, иначе -- false.
См. также:
txGetPixel(), txColors, RGB()
Примеры использования:
          txSetPixel (100, 100, TX_LIGHTRED);  // Красная точка! http://www.google.ru/search?q=коты+и+красная+точка

          txSetPixel (100, 100, RGB (255, 128, 0));
COLORREF txGetPixel ( double  x,
double  y,
HDC  dc = txDC() 
) [inline]

Возвращает текущий цвет точки (пикселя) на экране.

Аргументы:
xX-координата точки.
yY-координата точки.
dcДескриптор контекста рисования (холста) для возврата цвета. Необязателен.
Возвращает:
Текущий цвет пикселя, см. txColors, RGB().
См. также:
txSetPixel(), txColors, RGB()
Примеры использования:
          COLORREF color = txGetPixel (100, 200);

          if (txGetPixel (x, y) == TX_RED)
              CarCrash (x, y);     // Mess with the red -- die like the rest
bool txLine ( double  x0,
double  y0,
double  x1,
double  y1,
HDC  dc = txDC() 
)

Рисует линию.

Аргументы:
x0X-координата начальной точки.
y0Y-координата начальной точки.
x1X-координата конечной точки.
y1Y-координата конечной точки.
dcДескриптор контекста рисования (холста) для рисования линии. Необязателен.
Возвращает:
Если операция была успешна -- true, иначе -- false.

Цвет и толщина линии задается функцией txSetColor().

См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txLine(), txRectangle(), txPolygon(), txEllipse(), txCircle(), txArc(), txPie(), txChord()
Примеры использования:
          txLine (100, 200, 400, 500);
bool txRectangle ( double  x0,
double  y0,
double  x1,
double  y1,
HDC  dc = txDC() 
)

Рисует прямоугольник.

Аргументы:
x0X-координата верхнего левого угла.
y0Y-координата верхнего левого угла.
x1X-координата нижнего правого угла.
y1Y-координата нижнего правого угла.
dcДескриптор контекста рисования (холста) для рисования прямоугольника. Необязателен.
Возвращает:
Если операция была успешна -- true, иначе -- false.

Цвет и толщина линий задается функцией txSetColor(), цвет заполнения -- txSetFillColor().

См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txLine(), txRectangle(), txPolygon(), txEllipse(), txCircle(), txArc(), txPie(), txChord()
Примеры использования:
          txRectangle (100, 200, 400, 500);

          Win32::RoundRect (txDC(), 100, 200, 400, 500, 30, 30);  // И такое есть. Погуглите "RoundRect function".
bool txPolygon ( const POINT  points[],
int  numPoints,
HDC  dc = txDC() 
)

Рисует ломаную линию или многоугольник.

Аргументы:
pointsМассив структур POINT с координатами точек.
numPointsКоличество точек в массиве.
dcДескриптор контекста рисования (холста) для рисования линии или прямоугольника. Необязателен.
Возвращает:
Если операция была успешна -- true, иначе -- false.

Цвет и толщина линий задается функцией txSetColor(), цвет заполнения -- txSetFillColor().

См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txLine(), txRectangle(), txPolygon(), txEllipse(), txCircle(), txArc(), txPie(), txChord()
Примеры использования:
          POINT star[5] = {{150, 300}, {200, 100}, {250, 300}, {100, 200}, {300, 200}};
          txPolygon (star, 5);  // Я кривая звездочка
bool txEllipse ( double  x0,
double  y0,
double  x1,
double  y1,
HDC  dc = txDC() 
)

Рисует эллипс.

Аргументы:
x0X-координата верхнего левого угла прямоугольника, описанного вокруг эллипса.
y0Y-координата верхнего левого угла описанного прямоугольника.
x1X-координата нижнего правого угла описанного прямоугольника.
y1Y-координата нижнего правого угла описанного прямоугольника.
dcДескриптор контекста рисования (холста) для рисования. Необязателен.
Возвращает:
Если операция была успешна -- true, иначе -- false.

Цвет и толщина линий задается функцией txSetColor(), цвет заполнения -- txSetFillColor().

См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txLine(), txRectangle(), txPolygon(), txEllipse(), txCircle(), txArc(), txPie(), txChord()
Примеры использования:
          txEllipse (100, 100, 300, 200);
bool txCircle ( double  x,
double  y,
double  r 
)

Рисует окружность или круг.

Аргументы:
xX-координата центра.
yY-координата центра.
rРадиус.
Возвращает:
Если операция была успешна -- true, иначе -- false.

Цвет и толщина линий задается функцией txSetColor(), цвет заполнения -- txSetFillColor().

См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txLine(), txRectangle(), txPolygon(), txEllipse(), txCircle(), txArc(), txPie(), txChord()
Примеры использования:
          txCircle (100, 100, 10);
bool txArc ( double  x0,
double  y0,
double  x1,
double  y1,
double  startAngle,
double  totalAngle,
HDC  dc = txDC() 
)

Рисует дугу эллипса.

Аргументы:
x0X-координата верхнего левого угла прямоугольника, описанного вокруг эллипса, содержащего дугу (см. txEllipse).
y0Y-координата верхнего левого угла прямоугольника.
x1X-координата нижнего правого угла прямоугольника.
y1Y-координата нижнего правого угла прямоугольника.
startAngleУгол между направлением оси OX и началом дуги (в градусах).
totalAngleВеличина дуги (в градусах).
dcДескриптор контекста рисования (холста) для рисования. Необязателен.
Возвращает:
Если операция была успешна -- true, иначе -- false.

Цвет и толщина линий задается функцией txSetColor(), цвет заполнения -- txSetFillColor().

См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txLine(), txRectangle(), txPolygon(), txEllipse(), txCircle(), txArc(), txPie(), txChord()
Примеры использования:
          txArc (100, 100, 300, 200, 45, 270);
bool txPie ( double  x0,
double  y0,
double  x1,
double  y1,
double  startAngle,
double  totalAngle,
HDC  dc = txDC() 
)

Рисует сектор эллипса.

Аргументы:
x0X-координата верхнего левого угла прямоугольника, описанного вокруг эллипса, содержащего дугу (см. txEllipse).
y0Y-координата верхнего левого угла прямоугольника.
x1X-координата нижнего правого угла прямоугольника.
y1Y-координата нижнего правого угла прямоугольника.
startAngleУгол между направлением оси OX и началом сектора (в градусах).
totalAngleВеличина сектора (в градусах).
dcДескриптор контекста рисования (холста) для рисования. Необязателен.
Возвращает:
Если операция была успешна -- true, иначе -- false.

Цвет и толщина линий задается функцией txSetColor(), цвет заполнения -- txSetFillColor().

См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txLine(), txRectangle(), txPolygon(), txEllipse(), txCircle(), txArc(), txPie(), txChord()
Примеры использования:
          txPie (100, 100, 300, 200, 0, 180);  // Enter Pacman
bool txChord ( double  x0,
double  y0,
double  x1,
double  y1,
double  startAngle,
double  totalAngle,
HDC  dc = txDC() 
)

Рисует хорду эллипса.

Аргументы:
x0X-координата верхнего левого угла прямоугольника, описанного вокруг эллипса, содержащего дугу (см. txEllipse).
y0Y-координата верхнего левого угла прямоугольника.
x1X-координата нижнего правого угла прямоугольника.
y1Y-координата нижнего правого угла прямоугольника.
startAngleУгол между направлением оси OX и началом хорды (в градусах).
totalAngleВеличина хорды (в градусах).
dcДескриптор контекста рисования (холста) для рисования. Необязателен.
Возвращает:
Если операция была успешна -- true, иначе -- false.

Цвет и толщина линий задается функцией txSetColor(), цвет заполнения -- txSetFillColor().

См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txLine(), txRectangle(), txPolygon(), txEllipse(), txCircle(), txArc(), txPie(), txChord()
Примеры использования:
          txChord (100, 100, 300, 200, 45, 270);
bool txFloodFill ( double  x,
double  y,
COLORREF  color = TX_TRANSPARENT,
DWORD  mode = FLOODFILLSURFACE,
HDC  dc = txDC() 
)

Заливает произвольный контур текущим цветом заполнения.

Аргументы:
xX-координата точки начала заливки.
yY-координата точки начала заливки.
colorЦвет заливаемой области. Необязателен. Если не указан, то используется TX_TRANSPARENT -- автоопределение цвета.
modeРежим заливки. Необязателен. Если не указан, то используется FLOODFILLSURFACE -- заливка однородного фона.
dcДескриптор контекста рисования (холста) для рисования. Необязателен.
Возвращает:
Если операция была успешна -- true, иначе -- false.

Цвет заполнения задается функцией txSetFillColor(). Не рекомендуется для применения, так как работает довольно медленно. Лучше Используйте txPolygon().

Режимы заливки:
FLOODFILLSURFACE   -- Заливать область, указанную цветом color.
FLOODFILLBORDER   -- Заливать до границы, указанной цветом color.
См. также:
txSetFillColor(), txGetFillColor(), txColors, RGB(), txLine(), txRectangle(), txPolygon(), txEllipse(), txCircle(), txArc(), txPie(), txChord()
Примеры использования:
          txSetFillColor (TX_PINK);
          txLine (100, 200, 150, 100);
          txLine (150, 100, 200, 200);
          txLine (200, 200, 100, 200);
          txFloodFill (150, 150);
bool txTriangle ( double  x1,
double  y1,
double  x2,
double  y2,
double  x3,
double  y3 
)

Функция, которая должна бы рисовать треугольник.

Аргументы:
x1X-координата 1-й точки.
y1Y-координата 1-й точки.
x2X-координата 2-й точки.
y2Y-координата 2-й точки.
x3X-координата 3-й точки.
y3Y-координата 3-й точки.
Возвращает:
Если операция была бы успешна -- true, иначе -- false.
См. также:
txSetFillColor(), txGetFillColor(), txColors, RGB(), txLine(), txRectangle(), txPolygon(), txEllipse(), txCircle(), txArc(), txPie(), txChord()
См. также:
Пример с функциями с параметрами

См. определение в файле TXLib.h строка 1696

void txDrawMan ( int  x,
int  y,
int  sizeX,
int  sizeY,
COLORREF  color,
double  handL,
double  handR,
double  twist,
double  head,
double  eyes,
double  wink,
double  crazy,
double  smile,
double  hair,
double  wind 
)

Рисует человечка.

Это пример функции, которую Вы могли бы написать и сами.

Аргументы:
xX-координата человечка.
yY-координата человечка.
sizeXШирина человечка.
sizeYВысота человечка (также определяет размер головы).
colorЦвет человечка.
handLВысота подъема левой руки (относительно высоты человечка).
handRВысота подъема правой руки (относительно высоты человечка).
twistСмещение спины (относительно ширины человечка).
headВысота подъема головы (относительно высоты человечка).
eyesВеличина глаз (относительно размера головы).
winkМоргание глаз (0 -- оба открыты, -1 -- закрыт левый, +1 -- закрыт правый).
crazyСмещение глаз по вертикали (относительно размера головы).
smileУлыбка (относительно размера головы).
hairДлина волос (относительно размера головы).
windВетер, развевающий волосы (относительно размера головы).
См. также:
txSetFillColor(), txColors, RGB(), txLine(), txCircle()
Примеры использования:
          txCreateWindow (800, 600);

        //-----------+---+----+-----+-----+----------+-----+-----+-----+----+----+----+-----+-----+----+-----
        //           | x |  y |sizeX|sizeY| color    |handL|handR|twist|head|eyes|wink|crazy|smile|hair|wind
        //-----------+---+----+-----+-----+----------+-----+-----+-----+----+----+----+-----+-----+----+-----
        //           |   |    |     |     |          |     |     |     |    |    |    |     |     |    |
           txDrawMan (125, 250, 200,  200, TX_WHITE,    0,    0,    0,   0,   0.8,  0,   0,   1.0,   0,  0);
           txDrawMan (325, 250, 100,  200, TX_YELLOW,   0,    0,    0,   0,   0.8,  0,   0,  -1.0,   2,  0);
           txDrawMan (525, 250, 200,  100, TX_ORANGE,   0,    0,    0,   0,   1.0,  0,  -1,   0.3,   1,  0);
           txDrawMan (725, 250, 100,  100, TX_LIGHTRED, 0,    0,    0,   0,   1.0,  0,   1,  -0.3,   3,  0);

           txDrawMan (125, 550, 200,  200, TX_WHITE,    0.3,  0.3,  0,   0,   0.8, -1,   1,   0.5,   2, -1);
           txDrawMan (325, 550, 100,  200, TX_YELLOW,  -0.5, -0.5,  0,   0.1, 0.8,  1,   0,  -0.5,   3,  5);
           txDrawMan (525, 550, 200,  100, TX_ORANGE,  -0.5,  0.3,  0.2, 0,   0.8, -1,   1,   0.0,  10, -5);
           txDrawMan (725, 550, 100,  100, TX_LIGHTRED, 0.3, -0.5, -0.4, 0,   0.8,  1,  -1,   0.0,   1,  1);

См. определение в файле TXLib.h строка 1771

bool txTextOut ( double  x,
double  y,
const char  text[],
HDC  dc = txDC() 
)

Рисует текст.

Аргументы:
xX-координата начальной точки текста.
yY-координата начальной точки текста.
textТекстовая строка.
dcДескриптор контекста рисования (холста) для рисования. Необязателен.
Возвращает:
Если операция была успешна -- true, иначе -- false.

Цвет текста задается функцией txSetColor(), выравнивание -- txSetTextAlign().

См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txSelectFont(), txSetTextAign(), txGetTextExtent(), txGetTextExtentX(), txGetTextExtentY()
Примеры использования:
          txTextOut (100, 100, "Здесь могла бы быть Ваша реклама.");
bool txDrawText ( double  x0,
double  y0,
double  x1,
double  y1,
const char  text[],
unsigned  format = DT_CENTER|DT_VCENTER|DT_WORDBREAK|DT_WORD_ELLIPSIS,
HDC  dc = txDC() 
)

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

Аргументы:
x0X-координата верхнего левого угла области.
y0Y-координата верхнего левого угла области.
x1X-координата нижнего правого угла области.
y1Y-координата нижнего правого угла области.
textТекстовая строка.
formatФлаги форматирования текста. Необязательны. Если не указаны, то используется: центрирование, перенос по словам и добавление многоточия, если надпись не умещается в область.
dcДескриптор контекста рисования (холста) для рисования. Необязателен.
Возвращает:
Если операция была успешна -- true, иначе -- false.

Цвет текста задается функцией txSetColor(), выравнивание -- txSetTextAlign().

Заметки:
Не выводит ничего, если координаты идут в неверном порядке (если x0 > x1 или y0 > y1).

Флаги форматирования текста см. в MSDN (http://msdn.com), искать "DrawText Function (Windows)": http://msdn.microsoft.com/en-us/library/dd162498%28VS.85%29.aspx.

Автоматический перенос текста на несколько строк включается, если текст состоит из нескольких строк (есть хотя бы один символ новой строки \n).

Если надо отформатировать текст не по центру, а по левому или правому краю, то не забудьте указать остальные флаги форматирования, если они нужны: DT_VCENTER (вертикальное центрирование) | DT_WORDBREAK (перенос по словам) | DT_WORD_ELLIPSIS (ставить многоточие в конце, если текст не умещается). См. значение флагов по умолчанию.

Заметки:
Вертикальное центрирование работает только для надписей, в которых нет символа новой строки \n.
См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txTextOut(), txSelectFont(), txGetTextExtent(), txGetTextExtentX(), txGetTextExtentY()
Примеры использования:
          txSetColor     (TX_BLACK);
          txSetFillColor (TX_DARKGRAY); Win32::RoundRect (txDC(), 105, 105, 205, 255, 30, 30);
          txSetFillColor (TX_WHITE);    Win32::RoundRect (txDC(), 100, 100, 200, 250, 30, 30);

          txSelectFont ("Arial", 20, 0, FW_BOLD);
          txDrawText  (100, 100, 200, 250, "I hate it when I'm studying "
                                           "and a Velociraptor throws bananas on me.\n");
HFONT txSelectFont ( const char  name[],
double  sizeY,
double  sizeX = -1,
int  bold = FW_DONTCARE,
bool  italic = false,
bool  underline = false,
bool  strikeout = false,
double  angle = 0,
HDC  dc = txDC() 
)

Выбирает текущий шрифт.

Аргументы:
nameНазвание шрифта.
sizeYВысота букв (размер по Y).
sizeXШирина букв. Необязательна. Если не указана, то берется 1/3 от высоты.
boldЖирность шрифта (от 0 до 1000). Необязательна. Если не указана, то берется обычный шрифт.
italicКурсив. Необязателен.
underlineПодчеркивание. Необязательно.
strikeoutПеречеркивание. Необязательно.
angleУгол поворота текста (в градусах). Необязателен.
dcДескриптор контекста рисования (холста) для выбора шрифта. Необязателен.
Возвращает:
Выбранный шрифт. Если он не был найден, то устанавливается системный шрифт Windows (SYSTEM_FIXED_FONT, см. MSDN). Существование шрифта можно проверить функцией txFontExist().
См. также:
txTextOut(), txDrawText(), txFontExist()
Примеры использования:
          txSelectFont ("Comic Sans MS", 40);
          txTextOut (100, 100, "И здесь могла бы быть Ваша реклама.");
          txSelectFont ("Comic Sans MS", 40, 10, false, true, false, true, 15);
          txTextOut (100, 200, "Но ее почему-то нет.");
SIZE txGetTextExtent ( const char  text[],
HDC  dc = txDC() 
)

Вычисляет размеры текстовой надписи.

Аргументы:
textТекстовая строка.
dcДескриптор контекста рисования (холста), где планируется разместить надпись. Необязателен.
Возвращает:
Размеры надписи в структуре SIZE.
См. также:
txTextOut(), txSelectFont(), txGetTextExtent(), txGetTextExtentX(), txGetTextExtentY()
Примеры использования:
          SIZE size = txGetTextExtent (text);
          txTextOut (100 + size.cx / 2, 200 + size.cy / 2, text);
int txGetTextExtentX ( const char  text[],
HDC  dc = txDC() 
)

Вычисляет ширину текстовой надписи.

Аргументы:
textТекстовая строка.
dcДескриптор контекста рисования (холста), где планируется разместить надпись. Необязателен.
Возвращает:
Ширина надписи.
См. также:
txTextOut(), txSelectFont(), txGetTextExtent(), txGetTextExtentX(), txGetTextExtentY()
Примеры использования:
          txTextOut (100 + txGetTextExtentX (text) / 2, 200 + txGetTextExtentY (text) / 2, text);
int txGetTextExtentY ( const char  text[],
HDC  dc = txDC() 
)

Вычисляет высоту текстовой надписи.

Аргументы:
textТекстовая строка.
dcДескриптор контекста рисования (холста), где планируется разместить надпись. Необязателен.
Возвращает:
Высота надписи.
См. также:
txTextOut(), txSelectFont(), txGetTextExtent(), txGetTextExtentX(), txGetTextExtentY()
Примеры использования:
          txTextOut (100 + txGetTextExtentX (text) / 2, 200 + txGetTextExtentY (text) / 2, text);
unsigned txSetTextAlign ( unsigned  align = TA_CENTER|TA_BASELINE,
HDC  dc = txDC() 
)

Устанавливает текущее выравнивание текста.

Аргументы:
alignФлаги выравнивания. Необязательны. Если не указаны, то используются центрирование по горизонтали.
dcДескриптор контекста рисования (холста), где планируется разместить надпись. Необязателен.
Возвращает:
Предыдущее состояние выравнивания текста.
Флаги выравнивания:
TA_BASELINE   Точка (X,Y) определяет базовую линию текста.
TA_BOTTOM   Точка (X,Y) определяет нижнюю сторону описанного прямоугольника (текст лежит выше этой точки).
TA_TOP   Точка (X,Y) определяет верхнюю сторону описанного прямоугольника (текст лежит ниже этой точки).
TA_CENTER   Текст будет выровнен по горизонтали относительно точки (X,Y).
TA_LEFT   Точка (X,Y) определяет левую сторону описанного прямоугольника (текст лежит правее этой точки).
TA_RIGHT   Точка (X,Y) определяет правую сторону описанного прямоугольника (текст лежит левее этой точки).
См. также:
txTextOut(), txSelectFont(), txGetTextExtent(), txGetTextExtentX(), txGetTextExtentY()
Примеры использования:
          txSetTextAlign (TA_RIGHT);
          txTextOut (700, 100, "Чтобы доступ был легок и быстр,");
          txTextOut (700, 150, "Переменную клади в регистр.");
          txSetTextAlign();
LOGFONT* txFontExist ( const char  name[])

Ищет шрифт по его названию.

Аргументы:
nameНазвание шрифта.
Возвращает:
Информация о шрифте в структуре LOGFONT. Если шрифт не найден, возвращает NULL.
См. также:
txTextOut(), txSelectFont()
Примеры использования:
          if (txFontExist ("Comic Sans MS")) txSelectFont ("Comic Sans MS",   30);
          else                               txSelectFont ("Times New Roman", 30);

          txTextOut (100, 100, "Комик ли Санс?");  // google.ru/search?q=philosoraptor
HDC txCreateCompatibleDC ( double  sizeX,
double  sizeY,
HBITMAP  bitmap = NULL 
)

Создает дополнительный холст (контекст рисования, Device Context, DC) в памяти.

Аргументы:
sizeXШирина холста.
sizeYВысота холста.
bitmapBitmap to be associated with DC (optional). If omitted, color bitmap will be created automatically.
Возвращает:
Дескриптор (системный номер, выданный Windows) созданного холста (контекста рисования).

После создания на этом холсте можно рисовать, как и на основном окне TXLib, используя параметр dc функций рисования. Созданный холст имеет свои собственные настройки цветов, шрифтов и т.д., отличные от настроек основного окна TXLib. Чтобы увидеть результат рисования, скопируйте изображение холста на экран с помощью функций txBitBlt(), txTransparentBlt() или txAlphaBlend().

Предупреждения:
Созданный контекст затем будет нужно обязательно удалить при помощи txDeleteDC().
When the program will be shutting down, TXLib will try to delete DCs which were not deleted, but this is not guaranteed.
См. также:
txCreateWindow(), txCreateCompatibleDC(), txLoadImage(), txDeleteDC(), txSaveImage(), txGetExtent(), txCreateDIBSection()
Примеры использования:
          HDC save = txCreateCompatibleDC (100, 100);

          txBitBlt (save, 0, 0, 100, 100, txDC(), 0, 0);  // Сохраняем фон

          txTextOut (20, 20, "Boo!");
          txSleep (2000);

          txBitBlt (txDC(), 0, 0, 100, 100, save, 0, 0);  // Текст исчезает

          txDeleteDC (save);
HDC txCreateDIBSection ( double  sizeX,
double  sizeY,
RGBQUAD **  pixels = NULL 
)

Создает аппаратно-независимый дополнительный холст (контекст рисования, Device Context, DC) в памяти с возможностью прямого доступа к нему как к массиву.

Аргументы:
sizeXШирина холста.
sizeYВысота холста.
pixelsУказатель на переменную, которая будет использоваться для доступа к пикселям изображения. Необязателен. Эта переменная должна быть указателем на массив структур RGBQUAD, каждая из которых описывает цвет одного пикселя.
Возвращает:
Дескриптор созданного аппаратно-независимого холста (контекста рисования).

После создания на этом холсте можно рисовать, как и на основном окне TXLib, используя параметр dc функций рисования. Созданный холст имеет свои собственные настройки цветов, шрифтов и т.д., отличные от настроек основного окна TXLib. Чтобы увидеть результат рисования, скопируйте изображение холста на экран с помощью функций txBitBlt(), txTransparentBlt() или txAlphaBlend().

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

Для прямого доступа к пикселям холста, как к массиву, надо объявить указатель на массив структур RGBQUAD и передать адрес этого указателя в качестве третьего параметра функции txCreateDIBSection(). Она изменит значение этого указателя так, что он станет указывать на массив цветов пикселей холста. Память под массив RGBQUAD выделять и освобождать не надо, этим занимается сама txCreateDIBSection().

Массив pixels одномерный, но по сути он описывает двумерное изображение. Поэтому с ним надо работать как с двумерным прямоугольным массивом, физически расположенным в одномерном массиве: вручную вычислять смещение от начала массива до нужного пикселя и после этого адресоваться к массиву. (Так обычно делают, размещая двумерные массивы в динамической памяти.) См. пример использования ниже.

Заметки:
Аппаратно-независимые холсты -- это контексты устройств, связанные с аппаратно-независимыми растрами (Device Independent Bitmaps, DIB) Windows.
Предупреждения:
Созданный контекст затем будет нужно обязательно удалить при помощи txDeleteDC().
When the program will be shutting down, TXLib will try to delete DCs which were not deleted, but this is not guaranteed.
См. также:
txCreateWindow(), txCreateCompatibleDC(), txLoadImage(), txDeleteDC(), txSaveImage(), txGetExtent(), txCreateCompatibleDC()
Примеры использования:
          int main()
              {
              txCreateWindow (800, 600);

              POINT size = txGetExtent();

              txSetFillColor (TX_BLACK);
              txTextCursor (false);
              txBegin();

              HDC src = GetDC (HWND_DESKTOP);                       // Get HDC from Windows Desktop

              RGBQUAD* buf = NULL;
              HDC dc = txCreateDIBSection (size.x, size.y, &buf);
              assert (dc); assert (buf);

              while (!GetAsyncKeyState (VK_ESCAPE))
                  {
                  txBitBlt (dc, 0, 0, size.x, size.y, src);

                  for (int y = 0; y < size.y; y++)
                  for (int x = 0; x < size.x; x++)
                      {
                      RGBQUAD* c = &buf [x + y*size.x];             // Get color at (x, y) within image buffer

                      c->rgbRed      = (BYTE) (255 - c->rgbRed);    // Negative colors
                      c->rgbGreen    = (BYTE) (255 - c->rgbGreen);
                      c->rgbBlue     = (BYTE) (255 - c->rgbBlue);

                      double r       = hypot (x - size.x/2, y - size.y/2);
                      double alpha   = sin (0.05 * r) * 0.1 + 0.5;

                      c->rgbReserved = (BYTE) ROUND (255 * alpha);  // Set alpha-channel (transparency)
                      }

                  txUseAlpha (dc) asserted;                         // Premultiply colors with alpha

                  txClear();
                  txAlphaBlend (txDC(), 0, 0, 0, 0, dc);

                  printf ("FPS %.0lf\t\t\r", txGetFPS());
                  txSleep (0);
                  }

              txSaveImage ("TxFilter.bmp", dc);

              txDeleteDC (dc);
              ReleaseDC (HWND_DESKTOP, src);                        // Free Windows Desktop HDC

              return 0;
              }
HDC txLoadImage ( const char  filename[],
unsigned  imageFlags = IMAGE_BITMAP,
unsigned  loadFlags = LR_LOADFROMFILE 
)

Загружает из файла изображение в формате BMP. Делает это довольно медленно.

Аргументы:
filenameИмя файла с изображением в формате BMP.
imageFlagsТип загружаемого изображения, см. ниже. Необязателен. Если не указаны, загружается рисунок в формате BMP.
loadFlagsФлаги загрузки изображения, см. ниже. Необязательны. Если не указаны, загрузка идет из файла.
Возвращает:
Дескриптор созданного контекста рисования в памяти, с загруженным изображением. Если изображение не загружено (не найден файл, неверный формат файла и т.д.), то NULL.
Предупреждения:
Изображение загружается в автоматически создаваемый контекст рисования в памяти ("виртуальный холст"), который затем будет нужно обязательно удалить при помощи txDeleteDC().
When the program will be shutting down, TXLib will try to delete DCs which were not deleted, but this is not guaranteed.
Заметки:
Изображения поддерживаются только в формате BMP. Если взять файл другого формата, например JPG, и переименовать его со сменой расширения на BMP, то от этого формат не изменится. Такое изображение загружено не будет.

Если функция вернула NULL, то надо прежде всего проверить наличие файла изображения по указанному в программе пути и формат файла. Если путь к файлу не указан (или указан как неполный), то путь отсчитывается от текущей папки программы, которая может не совпадать текущей папкой среды программирования. Текущую папку программы можно посмотреть по команде About в системном меню (она указана там как "Run from").

Если изображение в файле содержит альфа-канал (информацию о прозрачности), то его цвета должны находиться в формате Premultiplied Alpha. См. замечания к функции txAlphaBlend().

Если изображение в файле с альфа-каналом не находится в формате Premultiplied Alpha, то после вызова txLoadImage() нужно вызвать функцию txUseAlpha(). Однако не надо этого делать, если цвета в файле уже находятся в формате Premultiplied Alpha, иначе картинка станет темнее. Также не надо вызывать txUseAlpha() несколько раз для одного и того же изображения.

Заметки:
Не надо часто загружать одно и то же изображение, особенно в цикле. От этого программа начинает тормозить!
Загрузите один раз перед циклом, потом используйте много раз. Посмотрите, как это сделано в примере TX\Examples\Tennis\Tennis.cpp.
Типы загружаемых изображений:
IMAGE_BITMAP   Рисунок в формате BMP
IMAGE_CURSOR   Курсор в формате CUR или ANI
IMAGE_ICON   Иконка в формате ICO
Флаги загрузки:
LR_CREATEDIBSECTION   Создает DIB (device-indepandent bitmap), удобную для прямого доступа к данным
LR_LOADFROMFILE   Загружает из файла (если этот флаг не указан, то загружает из ресурса EXE-файла)
Остальные флаги загрузки   см. на MSDN.com, поиск "LoadImage function".
См. также:
txCreateWindow(), txCreateCompatibleDC(), txLoadImage(), txDeleteDC(), txBitBlt(), txAlphaBlend(), txTransparentBlt(), txSaveImage(), txGetExtent()
Примеры использования:
Пример использования см. в файле TX\Examples\Tennis\Tennis.cpp.
          HDC  background_FromTXLibHelp = txLoadImage ("Resources\\Images\\Background.bmp");

          if (!background_FromTXLibHelp)
              txMessageBox ("Не могу загрузить фон из Background.bmp", "Да, я скопировал это из примера");

          // Не надо часто загружать одно и то же изображение, особенно в цикле -- программа будет тормозить!
          // Загрузите один раз перед циклом, потом используйте много раз.
          // Посмотрите, как сделано в примере TX\Examples\Tennis\Tennis.cpp.

          txBitBlt (txDC(), 0, 0, 800, 600, background_FromTXLibHelp, 0, 0);

          ...
          txDeleteDC (background_FromTXLibHelp);
bool txDeleteDC ( HDC  dc)

Уничтожает холст (контекст рисования, DC) в памяти.

Аргументы:
dcКонтекст рисования для уничтожения.
Если передан указатель на контекст, то после уничтожения по указателю записывается NULL.
Возвращает:
Если операция была успешна -- true, иначе -- false.
См. также:
txCreateWindow(), txCreateCompatibleDC(), txLoadImage(), txDeleteDC(), txSaveImage(), txGetExtent(), txCreateDIBSection()
Примеры использования:
Пример использования см. в файле TX\Examples\Tennis\Tennis.cpp.
          HDC  background_FromTXLibHelp = txLoadImage ("Resources\\Images\\Background.bmp");

          if (!background_FromTXLibHelp)
              txMessageBox ("Не могу загрузить фон из Background.bmp, и я скопировал это из примера.", "Oh, not now");

          // См. важный комментарий в примере к функции txLoadImage!

          txBitBlt (txDC(), 0, 0, 800, 600, background_FromTXLibHelp, 0, 0);

          ...
          txDeleteDC (background_FromTXLibHelp);
bool txBitBlt ( HDC  destImage,
double  xDest,
double  yDest,
double  width,
double  height,
HDC  sourceImage,
double  xSource = 0,
double  ySource = 0 
)

Копирует изображение с одного холста (контекста рисования, DC) на другой.

Аргументы:
destImageКонтекст назначения (куда копировать). Для копирования в окно TXLib укажите txDC().
xDestX-координата верхнего левого угла копируемого изображения.
yDestY-координата верхнего левого угла копируемого изображения.
widthШирина копируемой области. Если равна 0, то равна ширине изображения-источника.
heightВысота копируемой области. Если равна 0, то равна высоте изображения-источника.
sourceImageКонтекст источника (откуда копировать).
xSourceX-координата верхнего левого угла копируемой области внутри изображения-источника. Необязательна. Если не указана, то 0.
ySourceY-координата верхнего левого угла копируемой области внутри изображения-источника. Необязательна. Если не указана, то 0.
Возвращает:
Если операция была успешна -- true, иначе -- false.
Предупреждения:
Если контексты источника равен NULL, то он не существует и копирование вызовет ошибку. Наиболее частая причина -- ошибка при загрузке файла изображения и отсутствие проверки на эту ошибку. Пример с проверкой на правильность загрузки см. ниже.
См. также:
txAlphaBlend(), txTransparentBlt(), txSaveImage(), txGetExtent(), txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txCreateDIBSection()
Примеры использования:
Пример использования см. в файле TX\Examples\Tennis\Tennis.cpp.
          HDC  background_FromTXLibHelp = txLoadImage ("Resources\\Images\\Background.bmp");

          if (!background_FromTXLibHelp)
              ("Не могу фон из загрузить Background.bmp, и да, я взял этот код из примера.", "Once again :(");

          // См. важный комментарий в примере к функции txLoadImage!

          txBitBlt (txDC(), 0, 0, 800, 600, background_FromTXLibHelp);

          ...
          txDeleteDC (background_FromTXLibHelp);
bool txBitBlt ( double  xDest,
double  yDest,
HDC  sourceImage,
double  xSource = 0,
double  ySource = 0 
) [inline]

Копирует изображение на экран.

Аргументы:
xDestX-координата верхнего левого угла копируемого изображения.
yDestY-координата верхнего левого угла копируемого изображения.
sourceImageКопируемое изображение.
xSourceX-координата верхнего левого угла изображения. Необязательна. Если не указана, то 0.
ySourceY-координата верхнего левого угла изображения. Необязательна. Если не указана, то 0.
Возвращает:
Если операция была успешна -- true, иначе -- false.

См. описание в функции txBitBlt() выше.

bool txTransparentBlt ( HDC  destImage,
double  xDest,
double  yDest,
double  width,
double  height,
HDC  sourceImage,
double  xSource = 0,
double  ySource = 0,
COLORREF  transColor = TX_BLACK 
)

Копирует изображение с одного холста (контекста рисования, DC) на другой с учетом прозрачности.

Аргументы:
destImageКонтекст назначения (куда копировать). Для копирования в окно TXLib укажите txDC().
xDestX-координата верхнего левого угла копируемого изображения.
yDestY-координата верхнего левого угла копируемого изображения.
widthШирина копируемой области. Если равна 0, то автоматически берется из размера источника.
heightВысота копируемой области. Если равна 0, то автоматически берется из размера источника.
sourceImageКонтекст источника (откуда копировать).
xSourceX-координата верхнего левого угла копируемой области внутри изображения-источника. Необязательна. Если не указана, то 0.
ySourceY-координата верхнего левого угла копируемой области внутри изображения-источника. Необязательна. Если не указана, то 0.
transColorЦвет, который будет считаться прозрачным. Необязателен. Если не указан, то TX_BLACK.
Возвращает:
Если операция была успешна -- true, иначе -- false.
Предупреждения:
Если контекст источника равен NULL, то он не существует и копирование вызовет ошибку. Наиболее частая причина -- ошибка при загрузке файла изображения и отсутствие проверки на эту ошибку. Пример с проверкой на правильность загрузки см. ниже.

Изображение-источник и изображение-приемник не могут налагаться друг на друга.

Если прямоугольник копируемой области не полностью лежит внутри изображения-источника, то функция работать не будет. Такое бывает, если xSource или ySource отрицательны, или величина (xSource + width) больше ширины изображения-источника, или величина (ySource + height) больше высоты изображения-источника.

Стандартная функция TransparentBlt из Win32 API может масштабировать изображение. В txTransparentBlt это убрано для упрощения использования. If you need image scaling, use original function TransparentBlt and don't mess with stupid TX-based tools. (See implementation of txTransparentBlt in TXLib.h).

Заметки:
Если TransparentBlt не работает, используйте функцию AlphaBlend, она вообще лучше.
См. также:
txBitBlt(), txTransparentBlt(), txLoadImage(), txCreateCompatibleDC(), txSaveImage(), txGetExtent(), txCreateDIBSection()
Примеры использования:
Пример использования см. в файле TX\Examples\Tennis\Tennis.cpp.
          HDC  superman_FromTXLibHelp = txLoadImage ("Resources\\Images\\Superman.bmp");

          if (!superman_FromTXLibHelp)
              txMessageBox ("Cannot load superman, all the monsters will succeed (I copied them from TXLib Help)", "Sorry");

          // См. важный комментарий в примере к функции txLoadImage!

          txTransparentBlt (txDC(), 0, 0, 800, 600, superman_FromTXLibHelp);

          // А можно и так:
          Win32::TransparentBlt (txDC(), 0, 0, 800, 600, superman_FromTXLibHelp, 0, 0, 80, 60, -1); // 10x zoom
          // Познай мощь Win32 GDI, отказавшись от TXLib'а! :) см. TransparentBlt в MSDN.com.

          ...
          txDeleteDC (superman_FromTXLibHelp);  // So pity :( But he was only a copy from TXLib Help.
bool txTransparentBlt ( double  xDest,
double  yDest,
HDC  sourceImage,
COLORREF  transColor = TX_BLACK 
) [inline]

Копирует изображение на экран с учетом прозрачности.

Аргументы:
xDestX-координата верхнего левого угла копируемого изображения.
yDestY-координата верхнего левого угла копируемого изображения.
sourceImageКопируемое изображение.
transColorЦвет, который будет считаться прозрачным. Необязателен. Если не указан, то TX_BLACK.
Возвращает:
Если операция была успешна -- true, иначе -- false.

См. описание в функции txTransparentBlt() выше.

bool txAlphaBlend ( HDC  destImage,
double  xDest,
double  yDest,
double  width,
double  height,
HDC  sourceImage,
double  xSource = 0,
double  ySource = 0,
double  alpha = 1.0 
)

Копирует изображение с одного холста (контекста рисования, DC) на другой с учетом полупрозрачности.

Аргументы:
destImageКонтекст назначения (куда копировать). Для копирования в окно TXLib укажите txDC().
xDestX-координата верхнего левого угла копируемого изображения.
yDestY-координата верхнего левого угла копируемого изображения.
widthШирина копируемой области. Если равна 0, то равна ширине изображения-источника.
heightВысота копируемой области. Если равна 0, то равна высоте изображения-источника.
sourceImageКонтекст источника (откуда копировать). Должен иметь 32-битовый формат и альфа-канал (см. ниже).
xSourceX-координата верхнего левого угла копируемой области внутри изображения-источника. Необязательна. Если не указана, то 0.
ySourceY-координата верхнего левого угла копируемой области внутри изображения-источника. Необязательна. Если не указана, то 0.
alphaОбщая прозрачность изображения, в дополнение к альфа-каналу (0 -- все прозрачно, 1 -- использовать только альфа-канал). Необязательна. Если не указана, то 1.
Возвращает:
Если операция была успешна -- true, иначе -- false.
Предупреждения:
Если контекст источника равен NULL, то он не существует и копирование вызовет ошибку. Наиболее частая причина -- ошибка при загрузке файла изображения и отсутствие проверки на эту ошибку. Пример с проверкой на правильность загрузки см. ниже.

Изображение-источник и изображение-приемник не могут налагаться друг на друга.

Если прямоугольник копируемой области не полностью лежит внутри изображения-источника, то функция работать не будет. Такое бывает, если xSource или ySource отрицательны, или величина (xSource + width) больше ширины изображения-источника, или величина (ySource + height) больше высоты изображения-источника.
Заметки:
Изображение-источник должно быть загружено с помощью txLoadImage() и иметь либо 32-битовый RGBA-формат, либо 24-битовый RGB-формат. Дополнительный канал (A: альфа-канал) 32-битового формата отвечает за попиксельную прозрачность участков изображения: для каждого пикселя в этом канале значение 0 означает его полную прозрачность, значение 255 -- полную непрозрачность, промежуточные значения -- полупрозрачность.

24-битовый RGB-формат файлов (TrueColor) подразумевает, что попиксельной прозрачности нет и все пиксели изображения имеют равную прозрачность, задающуюся параметром alpha.

Пустое 32-битовое изображение-источник также может быть создано с помощью функции txCreateDIBSection(), а 24-битовое -- функцией txCreateCompatibleDC(). После создания на этом изображении можно рисовать, как на основном окне TXLib, используя параметр dc функций рисования.

Если изображение-источник создано с помощью txCreateDIBSection() или txLoadImage(), то txAlphaBlend() может использовать как общую прозрачность, задачаемую параметром alpha, так и попиксельную прозрачность, задаваемую альфа-каналом.

Для BMP-файла альфа-канал можно сделать, например, в Adobe Photoshop, командой "Новый канал (New Channel)" в палитре каналов (Channels). Черный цвет в альфа-канале соответствует полной прозрачности, белый -- полной непрозрачности. При этом в прозрачных областях само изображение (в каналах R, G, B) должно быть черным, и чем прозрачнее, тем чернее. Такой формат цвета называется Premultiplied Alpha. См. изображение с альфа-каналом в примере TX\Examples\Tennis\Tennis.cpp (файл с теннисной ракеткой: TX\Examples\Tennis\Resources\Images\Racket.bmp).

Иначе говоря, при пересчете в формат Premultiplied Alpha надо домножить цвета в каналах R,G,B на значения альфа-канале A: R,G,B *= A / 255.0. Получится вот что:

  • Если значение альфа-канала для некоторого пикселя равно 0 (полная прозрачность), тогда значения каналов R,G,B для этого пикселя также станут 0 (это черный цвет).
  • Если значение альфа-канала для некоторого пикселя равно 255 (полная непрозрачность), тогда значения каналов R,G,B для этого пикселя не изменятся.
  • Для других значений альфа-канала, пиксели изображения станут темнее.

В редакторе Adobe Photoshop это можно сделать командой Image -- Apply Image с параметрами:

Source:   Имя файла с картинкой
Layer:   Background
Channel:    Alpha 1
Blending:   Multiply
Opacity:   100%

Если изображение с альфа-каналом не находится в формате Premultiplied Alpha   и вам лень читать что, что написано выше,   то для перевода в этот формат можно использовать функцию txUseAlpha(). Однако не надо вызывать txUseAlpha() несколько раз для одного и того же уже загруженного изображения, иначе оно может становиться темнее и темнее.

Заметки:
Стандартная функция AlphaBlend из Win32 API может масштабировать изображение. В txAlphaBlend это убрано для упрощения использования. If you still need image scaling, use original function AlphaBlend and don't mess with stupid TX-based tools. (See implementation of txAlphaBlend in TXLib.h: open this file in your editor and search for txAlphaBlend function definition.)
См. также:
txBitBlt(), txTransparentBlt(), txLoadImage(), txCreateCompatibleDC(), txSaveImage(), txGetExtent(), txCreateDIBSection(), txUseAlpha()
Примеры использования:
Пример использования см. в файле TX\Examples\Tennis\Tennis.cpp.
          HDC  batman_FromTXLibHelp = txLoadImage ("Resources\\Images\\Batman.bmp");

          if (!batman_FromTXLibHelp)
              txMessageBox ("Call to Batman failed because I copied it from TXLib Help", "Do save yourself");

          txUseAlpha (batman_FromTXLibHelp);  // If image colors are not premultiplied, see above

          // См. важный комментарий в примере к функции txLoadImage!

          txAlphaBlend (txDC(), 0, 0, 800, 600, batman_FromTXLibHelp);

          ...
          txDeleteDC (batman_FromTXLibHelp);  // Don't worry, batman will return in "Batman returns" movie, later...
          ...

          return batman_FromTXLibHelp;        // ...and there he comes -- in TXLib copy form
bool txAlphaBlend ( double  xDest,
double  yDest,
HDC  sourceImage,
double  alpha = 1.0 
) [inline]

Копирует изображение на экран с учетом полупрозрачности.

Аргументы:
xDestX-координата верхнего левого угла копируемого изображения.
yDestY-координата верхнего левого угла копируемого изображения.
sourceImageКопируемое изображение.
alphaОбщая прозрачность изображения, в дополнение к альфа-каналу (0 -- все прозрачно, 1 -- использовать только альфа-канал). Необязательна. Если не указана, то 1.
Возвращает:
Если операция была успешна -- true, иначе -- false.

См. описание в функции txAlphaBlend() выше.

HDC txUseAlpha ( HDC  dc)

Пересчитывает цвета пикселей с учетом прозрачности (переводит цвета в формат Premultiplied Alpha).

Аргументы:
dcДескриптор холста, изображение которого пересчитывается.
Возвращает:
Если операция была успешна, возвращается исходный HDC, иначе -- NULL.

Пересчет цветов в каналах R,G,B в формат Premultiplied Alpha с учетом значения в альфа-канале A идет по формуле R,G,B *= A / 255.0. Получается вот что:

  • Если значение альфа-канала для некоторого пикселя равно 0 (полная прозрачность), тогда значения каналов R,G,B для этого пикселя также станут 0 (это черный цвет).
  • Если значение альфа-канала для некоторого пикселя равно 255 (полная непрозрачность), тогда значения каналов R,G,B для этого пикселя не изменятся.
  • Для других значений альфа-канала, пиксели изображения станут темнее.

Пересчет цветов пикселей с учетом их прозрачности в формат Premultiplied Alpha необходим:

  • В случае ручного изменения цветов, пример см. в функции txCreateDIBSection().
  • После загрузки картинок из файла с помощью txLoadImage(), если цвета изображения в нем не были заранее домножены на альфа-канал в Adobe Photoshop или аналогичной программе (см. замечания к функции txAlphaBlend).

См. также замечания к функции txAlphaBlend().

См. также:
txCreateCompatibleDC(), txCreateDIBSection(), txLoadImage(), txDeleteDC(), txAlphaBlend()
Примеры использования:
См. в функции txCreateDIBSection().
bool txSaveImage ( const char  filename[],
HDC  dc = txDC() 
)

Сохраняет в файл изображение в формате BMP.

Аргументы:
filenameИмя файла с расширением "BMP", куда будет записано изображение в формате BMP.
dcДескриптор холста, изображение которого сохраняется в файл. Необязателен. Если txDC(), сохраняется изображение окна TXLib.
Возвращает:
Если операция была успешна -- true, иначе -- false.
См. также:
txCreateCompatibleDC(), txLoadImage(), txDeleteDC(), txBitBlt(), txAlphaBlend(), txTransparentBlt()
Примеры использования:
          txDrawMan (50, 110, 100, 100, TX_YELLOW, 0.3, -0.5, -0.4, 0, 0.8, 1, -1, 0.5, 1, 1);

          HDC dc = txCreateCompatibleDC (100, 110);
          txBitBlt (dc, 0, 0, 100, 110, txDC());
          txSaveImage ("TXLibMan.bmp", dc);

          txBitBlt     (dc,       0,   0, 100, 110, txDC());
          txBitBlt     (txDC(), 200, 200,   0,   0, dc);
          txAlphaBlend (txDC(), 100, 100,   0,   0, dc, 0, 0, 0.25, 0);
          txDeleteDC (dc);

          txSaveImage ("ScreenShot.bmp");
double txSleep ( double  time = 0)

Задерживает выполнение программы на определенное время.

Аргументы:
timeЗадержка в миллисекундах. Необязательна. Если не указана, то используется минимальная возможная задержка.
Возвращает:
Реальное время задержки в миллисекундах.
Заметки:
Перед началом задержки изображение в окне обязательно обновится, даже если рисование заблокировано через txBegin().
См. также:
txBegin(), txEnd(), txUpdateWindow(), txDC()
Примеры использования:
          txSleep (500); // ПП: Поспать Полсекунды
void txRedrawWindow ( ) [inline]

Обновляет изображение в окне TXLib вручную.

TXLib реализует двойную буферизацию. Все рисовательные действия происходят со скрытым HDC, находящемся в памяти, и его содержимое периодически автоматически копируется на экран. Это иногда приводит к мерцанию. Автоматическое копирование можно выключить функцией txBegin() и обратно включить функцией txEnd(), в этом случае содержимое окна можно перерисовать функциями txRedrawWindow() или txSleep().

Дополнительную информацию об автоматическом обновлении см. в функциях txBegin(), txEnd(), txUpdateWindow(), txSleep().

Заметки:
Реализация этой функции неэффективна. Чтобы сделать более эффективную реализацию, посмотрите исходный текст txRedrawWindow() и сделайте лучше. Либо напишите свою, более быструю библиотеку на основе Win32 GDI, GDI Plus, OpenGL, DirectX, SDL или SFML.
См. также:
txWindow(), txBegin(), txEnd(), txLock(), txUnlock(), txGDI()
Примеры использования:
          txBegin();                // Выключаем автоматическое обновление экрана

          txCircle (100, 100, 50);  // Рисуем -- изображение не появляется

          Sleep (3000);             // не txSleep()! txSleep() сама обновит изображение на экране

          txRedrawWindow();         // Обновляем экран вручную -- изображение появляется
int txBegin ( ) [inline]

Блокирует обновление изображения окна, во избежание мигания.

Для снятия блокировки используется функция txEnd().

Если в программе требуется задержка, то используйте функцию txSleep(), так как она автоматически обновляет изображение, независимо от состояния блокировки.

Предупреждения:
Избегайте блокирования на долгое время. Это может привести к дефектам изображения в окне.
Заметки:
Если нажата клавиша Alt+PrintScreen, то блокировка временно отменяется.
Возвращает:
Значение счетчика блокировки (если 0, то рисование разблокировано).
См. также:
txEnd(), txSleep(), txUpdateWindow(), txDC(), txTextCursor()
Примеры использования:
          txBegin();                        // Здесь изображение "замерзнет"
          txSetFillColor (TX_WHITE);
          txClear();                        // Это вызвало бы мигание без txBegin()
          txSetFillColor (TX_RED);
          txRectangle (100, 100, 200, 200);
          txEnd();                          // Здесь мы сразу увидим окончательный рисунок
int txEnd ( ) [inline]

Разблокирует обновление окна, заблокированное функцией txBegin().

Предупреждения:
Если txBegin() вызывалась несколько раз, то для снятия блокировки требуется столько же раз вызвать txEnd().
Возвращает:
Значение счетчика блокировки (если 0, то рисование разблокировано).
Заметки:
Если нажата клавиша Alt+PrintScreen, то блокировка временно отменяется.
См. также:
txBegin(), txSleep(), txUpdateWindow(), txDC(), txTextCursor()
Примеры использования:
          txBegin();                        // Здесь изображение "замерзнет"
          txSetFillColor (TX_WHITE);
          txClear();                        // Это вызвало бы мигание без txBegin()
          txSetFillColor (TX_RED);
          txRectangle (100, 100, 200, 200);
          txEnd();                          // Здесь мы сразу увидим окончательный рисунок
bool txDestroyWindow ( )

Уничтожает окно TXLib.

Возвращает:
Если операция была успешна -- true, иначе -- false.
Предупреждения:
Если уничтожается главное окно TXLib, функция main() прерывается и программа автоматически завершается. При этом не гарантируется правильное завершение программы, поэтому так делать не рекомендуется.
См. также:
txCreateWindow()
Примеры использования:
          txDestroyWindow();  // Farewell to the world
double txQueryPerformance ( )

Оценивает скорость работы компьютера.

Возвращает:
Скорость работы (графических операций) в условных единицах.
См. также:
txSleep(), txGetFPS()
Примеры использования:
          if (txQueryPerformance() < 1) printf ("Хочется новый компьютер");
double txGetFPS ( unsigned  minFrames = 0)

Выдает количество кадров (вызовов этой функции) в секунду.

Аргументы:
minFramesКоличество вызовов, после которых FPS начинает усредняться. Необязательно.
Возвращает:
FPS (Frames per Second), т.е. количество кадров (вызовов этой функции) в секунду.
Заметки:
Когда количество вызовов этой функции превысит minFrames, FPS начинает усредняться по последним кадрам. Максимальное количество интервала усреднения -- 100 кадров.
См. также:
txSleep(), txQueryPerformance()
Примеры использования:
См. в функции txCreateDIBSection().
bool txSetConsoleAttr ( unsigned  colors = 0x07)

Устанавливает цветовые атрибуты консоли.

Аргументы:
colorsЦветовые атрибуты консоли. Необязательны. Если не указаны, то цвет -- светло-серый.
Возвращает:
Если операция была успешна -- true, иначе -- false.

Атрибуты -- это цвет текста (colorText) и цвет фона (colorBackground), объединенные вместе:

colors = colorText + colorBackground * 16

либо

colors = colorText | (colorBackground << 4)

Цвета атрибутов не имеют никакого отношения к цветам рисования, задаваемыми TX_... константами, RGB(), txSetColor(), txSetFillColor() и т.д. Значения цветов см. ниже.

Значения цветов атрибутов
Dec   Hex     Dec   Hex   
0 =   0x0   = BLACK (Черный),   8 =   0x8   = DARKGRAY (Темно-серый),
1 =   0x1   = BLUE (Синий),   9 =   0x9   = LIGHTBLUE (Светло-синий),
2 =   0x2   = GREEN (Зеленый),   10 =   0xA   = LIGHTGREEN (Светло-зеленый),
3 =   0x3   = CYAN (Сине-зеленый),   11 =   0xB   = LIGHTCYAN (Светло-сине-зеленый),
4 =   0x4   = RED (Красный),   12 =   0xC   = LIGHTRED (Светло-красный),
5 =   0x5   = MAGENTA (Малиновый),   13 =   0xD   = LIGHTMAGENTA (Светло-малиновый),
6 =   0x6   = DARKYELLOW (Темно-желтый),   14 =   0xE   = YELLOW (Желтый),
7 =   0x7   = LIGHTGRAY (Светло-серый),   15 =   0xF   = WHITE (Белый).

Цвета букв образуются соединением слов FOREGROUND_<название цвета>, например, FOREGROUND_WHITE.

Цвета фона образуются соединением слов BACKGROUND_<название цвета>, например, BACKGROUND_CYAN.

В шестнадцатеричной системе счисления атрибуты задавать так: если нужен, скажем, желтый цвет на синем фоне, то его код будет 0x1e (старшая цифра -- старшие 4 бита -- это цвет фона, младшая цифра -- младшие 4 бита -- это цвет текста).

См. также:
txTextCursor(), txGetConsoleAttr(), txSetConsoleCursorPos(), txGetConsoleCursorPos(), txGetConsoleFontSize(), txClearConsole()
Примеры использования:
          txSetConsoleAttr (FOREGROUND_YELLOW | BACKGROUND_BLUE);
          printf ("А в небе 0x1 есть город 0xE");  // (c) Б. Гребенщиков
unsigned txGetConsoleAttr ( )

Возвращает текущие цветовые атрибуты консоли.

Возвращает:
Текущие цветовые атрибуты консоли. См. txSetConsoleAttr().
См. также:
txTextCursor(), txSetConsoleAttr(), txSetConsoleCursorPos(), txGetConsoleCursorPos(), txGetConsoleFontSize(), txClearConsole()
Примеры использования:
          unsigned attr = txGetConsoleAttr();
bool txClearConsole ( )

Стирает текст консоли.

Возвращает:
Если операция была успешна -- true, иначе -- false.

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

См. также:
txTextCursor(), txSetConsoleAttr(), txGetConsoleAttr(), txGetConsoleCursorPos(), txGetConsoleFontSize(), txClearConsole()
Примеры использования:
          txClearConsole();  // Ну вот и все, дружок
POINT txSetConsoleCursorPos ( double  x,
double  y 
)

Устанавливает позицию мигающего курсора консоли.

Аргументы:
xX-координата курсора в пикселях.
yY-координата курсора в пикселях.
Возвращает:
Предыдущее положение мигающего курсора в структуре POINT.
Заметки:
Нельзя установить совсем любую позицию. Текст в консоли расположен по прямоугольной сетке, размер которой зависит от размеров шрифта консоли. Устанавливаемая позиция округляется, чтобы курсор попал в ячейку сетки. См. пример к функции txGetConsoleFontSize().
См. также:
txTextCursor(), txSetConsoleAttr(), txGetConsoleAttr(), txGetConsoleCursorPos(), txClearConsole()
Примеры использования:
          txSetConsoleCursorPos (txGetExtentX(), txGetExtentY());  // Центр Вселенной
POINT txGetConsoleCursorPos ( )

Возвращает позицию мигающего курсора консоли.

Возвращает:
Положение мигающего курсора в структуре POINT.
См. также:
txTextCursor(), txSetConsoleAttr(), txGetConsoleAttr(), txSetConsoleCursorPos(), txClearConsole()
Примеры использования:
          POINT pos = txGetConsoleCursorPos();
POINT txGetConsoleFontSize ( )

Возвращает размеры шрифта консоли.

Возвращает:
Размеры шрифта консоли в пикселях, в структуре POINT.
См. также:
txTextCursor(), txSetConsoleAttr(), txGetConsoleAttr(), txSetConsoleCursorPos(), txGetConsoleFontSize(), txClearConsole()
Примеры использования:
          POINT size = txGetConsoleFontSize();
          txSetConsoleCursorPos (5 * size.x, 10 * size.y);  // А теперь мигай вот там
bool txTextCursor ( bool  blink = true)

Запрещает или разрешает рисование мигающего курсора в окне.

Аргументы:
blinkfalse -- запретить мигающий курсор. Если не указано, то мигание разрешается.
Возвращает:
Предыдущее значение состояния курсора.
См. также:
txSetConsoleAttr(), txGetConsoleAttr(), txSetConsoleCursorPos(), txGetConsoleCursorPos(), txGetConsoleFontSize(), txClearConsole(), txCreateWindow(), txUpdateWindow(), txLock(), txUnlock(), txGDI()
Примеры использования:
          txTextCursor (false);
          ...
          txTextCursor();
const char* txVersion ( ) [inline]

Возвращает строку с информацией о текущей версии библиотеки.

Возвращает:
Строка с информацией о текущей версии библиотеки.
Примеры использования:
          printf ("I personally love %s\n", txVersion());
unsigned txVersionNumber ( ) [inline]

Возвращает номер версии библиотеки.

Возвращает:
Номер версии библиотеки.
Примеры использования:
          printf ("My magic number is %x\n", txVersionNumber());
const char* txGetModuleFileName ( bool  fileNameOnly = true)

Возвращает имя исполняемого файла или изначальный заголовок окна TXLib.

Аргументы:
fileNameOnlyВозвратить только полное имя исполняемого файла, полученного через Win32 функцию GetFileModuleName (NULL, ...). Необязательно. Если не указано, то возвращается полное имя исполняемого файла.
Возвращает:
fileNameOnly = true: Имя исполняемого файла.
fileNameOnly = false: Изначальный заголовок окна TXLib.
Заметки:
Возвращается статическая строка.
См. также:
txWindow(), txVersion(), txVersionNumber()
Примеры использования:
          printf ("Смотрите на заголовок окна!");

          for (int done = 0; done <= 100; done++)
              {
              char title [1024] = "";
              sprintf (title, "%s - [%-10.*s] %d%%", txGetModuleFileName (false), done/10, "||||||||||", done);

              SetWindowText (txWindow(), title);
              SetWindowText (Win32::GetConsoleWindow(), title);
              txSleep (50);
              }

          txMessageBox ("Вот такой вот progress bar", "TXLib forever)");
int txUpdateWindow ( int  update = true) [inline]

Разрешает или запрещает автоматическое обновление изображения в окне.

Аргументы:
updateРежим обновления (true -- разрешить, false -- запретить). Необязателен. Если не указан, то "разрешить".
Возвращает:
Предыдущее состояние режима обновления.

В отличие от txBegin() и txEnd(), которые поддерживают вложенные вызовы и работают как "скобки для замерзания картинки", txUpdateWindow() позволяет явно установить или снять блокировку автоматического обновления экрана.

Более полную информацию о блокировке см. в функциях txBegin(), txEnd(), txSleep() и txDC().

См. также:
txBegin(), txEnd(), txSleep(), txUpdateWindow(), txDC(), txTextCursor(), txLock(), txUnlock(), txGDI()
Примеры использования:
          txUpdateWindow (false);
          ...
          txUpdateWindow();
bool txSelectObject ( HGDIOBJ  obj,
HDC  dc = txDC() 
)

Устанавливает текущий активный объект GDI.

Аргументы:
objДескриптор объекта GDI.
dcХолст (контекст рисования), в котором устанавливается текущий активный объект GDI. Необязателен.
Возвращает:
Если операция была успешна -- true, иначе -- false.
Заметки:
Предыдущий выбранный объект того же типа (PEN/BRUSH/BITMAP и т.п.), как и obj, уничтожается.
См. также:
txSetColor(), txGetColor(), txSetFillColor(), txGetFillColor(), txColors, RGB(), txSelectFont()
Примеры использования:
          HPEN pen = CreatePen (PS_DASH, 1, RGB (255, 128, 0));
          txSelectObject (pen);
bool txIDontWantToHaveAPauseAfterMyProgramBeforeTheWindowWillClose_AndIWillNotBeAskingWhereIsMyPicture ( )

Делает нечто иногда удобное. См. название функции.

Возвращает:
Если операция была успешна -- true, иначе -- false.

У этой функции есть синоним с простым понятным названием, поищите его в файле библиотеки, около определения этой функции. Или можно   скопировать   набрать это километровое имя и посмотреть, что получится.

См. также:
txCreateWindow(), txSleep()
Примеры использования:
          int main()
              {
              txCreateWindow (800, 600);

              txSetTextAlign (TA_CENTER);
              txTextOut (txGetExtentX()/2, txGetExtentY()/2, "Press any key to exit!");