46
правокИзменения
Нет описания правки
Перед началом вывода графики необходимо чтобы у нас был [[AHI#Контекст устройства|контекст устройства]] ('''dCtx'''), на которое будем выводить графику и две [[AHI#Поверхности|поверхности]] - экранная поверхность ('''sDisp''') и внеэкранная поверхность ('''sDraw'''). Если у нас их нет - смотрим [[AHI#Инициализация|здесь]] как их получить.
<ol>
<li>'''Перед выводом графики мы меняем поверхность, на которой будем рисовать'''<br>
По-умолчанию этой поверхностью является экранная поверхность. Но для наших целей она не подходит. Переключаем поверхность вывода с помощью функции [[AhiDrawSurfDstSet]]:
<pre>
AhiDrawSurfDstSet(dCtx, sDraw, 0);
// Установим цвет кисти. Этим цветом будут выводиться наши графические примитивы
AhiDrawBrushFgColorSet(devCxdCtx, ATI_565RGB(0,0,255)); // Ярко-синий
// Зададим прямоугольник на экране, который будет залит нашим цветом
// Нарисуем прямоугольник rect
AhiDrawSpans( dCtx, &rect, 1, 0);
</pre>
</li>
Графика выведена в память, но теперь её нужно вывести на экран. Для этого мы выставляем растровую операцию в <tt>'''AHIROP_SRCCOPY'''</tt>, устанавливаем поверхность-источник в '''sDraw''' (там у нас находится то, что мы уже вывели), а поверхность-приёмник в '''sDisp''' (экранная поверхность) и копируем изображение с помощью функции [[AhiDrawBitBlt]]:
<pre>
// Левый верхний угол поверхности рисования
AHIPOINT_T zpoint = {0, 0};
// Область вывода на поверхность экрана
AHIRECT_T zrect = {0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT};
// Устанавливаем растровую операцию
AhiDrawRopSet(hDCdCtx, AHIROP3(AHIROP_SRCCOPY));
// Устанавливаем поверхность-источник
AhiDrawSurfSrcSet(hDCdCtx, sDraw, 0);
// Устанавливаем поверхность-приёмник
AhiDrawSurfDstSet(hDCdCtx, sDisp, 0);
// Копируем изображение
AhiDrawBitBlt(hDCdCtx, &rectzrect, &pointzpoint);
</pre>
</li>
</ol>
Изображение получено на экране.
== См. также ==
* [[AHI]] - драйвер для чипов ATI
* [[LdrDisplayCbkReg]] - функция для создания callback'ов для рисования поверх [[UIS]]
* [[LdrDisplayCbkUnReg]] - функция для удаления callback'ов, созданных с помощью [[LdrDisplayCbkReg]]
[[Категория:Эльфостроение]]