Открыть главное меню

Изменения

AHI

2932 байта добавлено, 13:43, 21 августа 2009
Даже немножечко, чайная ложечка - это уже хорошо!
С учётом сказанного, для наиболее эффективного использования средств, предоставляемых драйвером, их следует использовать в приложении, основанном на [[Task|таске]].
== Основные концепции понятия и начало работы ==
API драйвера напоминает интерфейсом обычные графические библиотеки, как например GDI. Рассмотрим основные понятия и приёмы работы с AHI в применении к эльфописанию.
*'''Поверхность кисти ("Brush Surface")
*:С этой поверхностью приложения никогда не работают напрямую, но о её существовании лучше знать, чтобы проще было понимать принцип работы некоторых функций рисования - она является важным вспомогательным инструментом. Всегда монохромная (однобитная).
*:Устанавливается и инициализируется самим драйвером, а настраивается с помощью функции [[AhiDrawBrushSet]].
<li>'''Установить [[Raster Operations|растровую операцию]]<br>
Чтобы не углубляться в рамках этой статьи в растровые операции, ограничимся пока что простым правилом: Для вывода растровых изображенийустанавливаем <tt>AHIROP_SRCCOPY</tt>, установим а для рисования цветом - <tt>SRCCOPYAHIROP_PATTERN</tt>.Отсановимся на последнем, так как пригодится в последующем примере.
<pre>
// Устанавливаем растровую операцию на прямое копирование из источникаприменение кистиAhiDrawRopSet( dCtx, AHIROP3(AHIROP_SRCCOPYAHIROP_PATTERN) );</pre></li> <li>'''Настроить кисть<br>Это делать не обязательно, если мы не собираемся рисовать графические примитивы. Но так как мы собираемся, то...<pre>// Установим кисть на самую обычную, сплошную (SOLID)AhiDrawBrushSet(devCx, NULL, NULL, 0x0, AHIFLAG_BRUSH_SOLID);
</pre>
</li>
</ol>
Конечно, некоторые из этих операций понадобится повторить перед вызовом определённых функций, с другими установками, но надеюсь это уже не составит для Вас проблем.
 
=== Проба пера ===
Наконец, всё готово для того, чтобы что-нибудь уже нарисовать. Не будем здесь заострять внимание на таких тривиальных вещах, как размещение последующих примеров в коде и инициализация приложения. Пускай, например, это будет вызов в таймере.
 
Для первого раза нарисуем цветной графический примитив.
 
<pre>
// Вспомогательная переменная для указания области экрана
AHIRECT_T rect;
 
// Установим цвет кисти. Этим цветом будут выводиться наши графические примитивы
// Составить 16-битное значение цвета нам поможет макрос ATI_565RGB.
// Параметрами являются значения трёх компонент цвета RGB в пределах 0-255.
AhiDrawBrushFgColorSet(devCx, ATI_565RGB(0,0,255)); // Ярко-синий
 
// Зададим прямоугольник на экране, который будет залит нашим цветом
// x1, y1 - координаты левого верхнего угла прямоугольника, x2, y2 - правого нижнего.
rect.x1 = 0;
rect.y1 = 0;
rect.x2 = 64;
rect.y2 = 64;
 
// Нарисуем прямоугольник rect
AhiDrawSpans( dCtx, &rect, 1, 0);
</pre>
References: [[AhiDrawBrushFgColorSet]], [[AhiDrawSpans]]
 
После этого мы получим на экране синий квадрат в левом верхнем углу.
161
правка