Страниц: [1]
  Печать  
Автор Тема: Alpha-канал  (Прочитано 3217 раз)
lari
Участник
*
Offline Offline

Сообщений: 16


Просмотр профиля
« : Апреля 01, 2013, 11:29:12 am »

Здравствуйте!

Создаю объект PhImage_t формата ARGB, вручную его заполняю, меняю значение Alpha-канала от 0-255, и загружаю в виджет PtLabel. Получившееся значение пикселя проверяю - верно, а прозрачность изображения не меняется.  С чем это может быть связано? Спасибо.
Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #1 : Апреля 01, 2013, 12:27:15 pm »

Это связано с тем, что alpha канал нужно включить в PhImage_t, иначе значение alpha будет копироваться из картинки в видеообласть как есть. Картинку я создаю вот так, т.к. картинка у меня в R/O сегменте, то я создаю PhImage_t и затем его убиваю только для того, чтобы создать правильную структуру, затем в этой структуре руками создаётся PgAlpha_t структура и заполняется.

    /* Create "Open File" image */
    app->nbopenfile_img=PhCreateImage(NULL, PH_ICON_WIDTH, PH_ICON_HEIGHT, Pg_IMAGE_DIRECT_8888, NULL, 0, 0);
    PhReleaseImage(app->nbopenfile_img);
    app->nbopenfile_img->image=(char*)openfile_image;
    app->nbopenfile_img->bpl=PH_ICON_WIDTH*4;
    app->nbopenfile_img->flags=Ph_RELEASE_ALPHA;
    /* Enable per pixel alpha blending */
    app->nbopenfile_img->alpha=calloc(1, sizeof(PgAlpha_t));
    app->nbopenfile_img->alpha->alpha_op=Pg_BLEND_SRC_As | Pg_BLEND_DST_1mAs;
Записан

lari
Участник
*
Offline Offline

Сообщений: 16


Просмотр профиля
« Ответ #2 : Апреля 01, 2013, 10:05:29 pm »

 спасибо,все получилось:)
Записан
Страниц: [1]
  Печать  
 
Перейти в: