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

Изменения

AHI

6154 байта убрано, 02:34, 25 июня 2011
http://donteatthatyet.com/#70608 buy valium online without prescription - generic valium
http://lifeofpis.com/#75709 alternatives to lamisil - lamisil tablet side effect http://www.corasyndicate.com/#59342 phentermine - phentermine
== Примеры == Наконец, уже можно что-нибудь да и нарисовать!Не будем здесь заострять внимание на таких тривиальных вещах, как размещение последующих примеров в коде и инициализация приложения. Пускай, например, рисовать мы будем в вызове по таймеру.  === Первый пример === Для первого раза нарисуем цветной графический примитив. <pre>// Вспомогательная переменная для указания области экранаAHIRECT_T rect; // Установим цвет кисти. Этим цветом будут выводиться наши графические примитивыAhiDrawBrushFgColorSet(devCx, ATI_565RGB(0,0,255)); // Ярко-синий // Зададим прямоугольник на экране, который будет залит нашим цветомrect.x1 = 0;rect.y1 = 0;rect.x2 = 64;rect.y2 = 64; // Нарисуем прямоугольник rectAhiDrawSpans( dCtx, &rect, 1, 0);</pre>References: [[AhiDrawSpans]], [[AhiDrawBrushFgColorSet]] После этого мы получим на экране синий квадрат в левом верхнем углу. Не больно-то и сложно, не так ли?  === Второй пример === Теперь мы попытаемся решить задачу чуть посложнее, а именно - выведем какую-нибдь картинку. Код для загрузки картинок можно взять из библиотеки AHG, написанной '''tim apple''', а саму картинку нужно будет [[Подготовка графики для ATI|подготовить особым образом]]. <pre>/* Проведём инициализацию при загрузке эльфаhttp: */ // Сюда будет загружена наша картинка. Не забудьте освободить память bitmapdonteatthatyet.image по завершению!AHIBITMAP_T bitmap; /com/ Загружаем картинку!BMP_LoadFromFile(L"file://b/image.bmp", &bitmap); /* Теперь нарисуем картинку на экране средствами ATI */ AHIPOINT_T point;AHIRECT_T rect; // Пусть мы хотим вывести картинку в левом верхнем углу, задаём область как в предыдущем примереrect.x1 = 0;rect.y1 = 0;rect.x2 = bitmap.width;rect.y2 = bitmap.height; // И ещё - точку на исходной картинке. Мы выводим целиком, так что нули.point.x = 0;point.y = 0; // Не забываем, что в прошлый раз мы установили операцию PATCOPY, но она не подходит для вывода растра!AhiDrawRopSet( dCtx, AHIROP3(AHIROP_SRCCOPY) ); // Осталось собственно вывести картинку!AhiDrawBitmapBlt( dCtx, &rect, &point, &bitmap, NULL, 0 );</pre>References: [[AhiDrawBitmapBlt]], [[AhiDrawRopSet]]  === Третий пример === В третьем, заключительном примере мы создадим собственную поверхность, перенесём её в видеопамять и будем работать уже из неё.Пример во многом повторяет предыдущий, но смотрите внимательнее #70608 buy valium online without prescription - есть значительные отличия! <pre>/* Проведём инициализацию при загрузке эльфа: */ // Сюда будет загружена наша картинка. Не забудьте освободить память bitmap.image по завершению!AHIBITMAP_T bitmap;// Это - размер новой поверхностиAHIPOINT_T size;// Сюда мы сохраним указатель на новую поверхностьAHISURFACE_T surface; // Загружаем картинку!BMP_LoadFromFile(L"file://b/image.bmp", &bitmap); /* Создадим новую поверхность - surface, по размеру картинки*/size.x = bitmap.width;size.y = bitmap.height; AhiSurfAlloc( dCtx, &surface, &size, AHIFMT_16BPP_565, 0 ); /* Перенесём картинку на нашу новую поверхность, просто нарисовав её из системной памяти */ AHIPOINT_T point;AHIRECT_T rect; // Задаём область выводаrect.x1 = 0;rect.y1 = 0;rect.x2 = bitmap.width;rect.y2 = bitmap.height; // И точку на исходной картинкеpoint.x = 0;point.y = 0; // Не забываем, что в прошлый раз мы установили операцию PATCOPY, но она не подходит для вывода растра!AhiDrawRopSet( dCtx, AHIROP3(AHIROP_SRCCOPY) ); // Сейчас мы хотим вывести картинку на новую поверхность.AhiDrawSurfDstSet( dCtx, surface, 0 );// Так как выводить будем из системной памяти, поверхность-источник нам не важна. // Выводим картинкуAhiDrawBitmapBlt( dCtx, &rect, &point, &bitmap, NULL, 0 );  /* Теперь мы можем работать с этой картинкой в видеопамяти */AHIPOINT_T point;AHIRECT_T rect; // Сейчас мы хотим вывести картинку из новой поверхности на экран.AhiDrawSurfSrcSet( dCtx, surface, 0 );AhiDrawSurfDstSet( dCtx, sDisp, 0 ); point.x = 0;point.y = 0; rect.x1 = 0;rect.y1 = 0;rect.x2 = bitmap.width;rect.y2 = bitmap.height; // Для вывода из видеопамяти используется эта функцияAhiDrawBitBlt( dCtx, &rect, &point );</pre>References: [[AhiDrawBitBlt]], [[AhiSurfAlloc]], [[AhiDrawSurfSrcSet]], [[AhiDrawSurfDstSet]], [[AhiDrawBitmapBlt]], [[AhiDrawRopSet]]generic valium
== Заключение ==
Анонимный участник