Модераторы: Alexeis

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Картинка на кноку в WinCE 
V
    Опции темы
Andrey44
Дата 3.6.2009, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: нет
Всего: 26



Brodyaga, а может лучше рисовать иконки на кнопке? Ведь намного проще.
Или тебе именно надо PNG?


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Brodyaga
Дата 3.6.2009, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Цитата

Brodyaga, а может лучше рисовать иконки на кнопке? Ведь намного проще.
Или тебе именно надо PNG?


Мне надо png на кнопке.. дизайнер нарисовал png. Правда можно его БОЛЕЕ МЕНЕЕ сконвертить в bmp, но хреново получица :( да и потом весь интерфейс походу png-шный будет..

Вообще я решил всётаки разобраца с либпнг.. там хоть длл и либа есть готовые скопилинные.. :( может примерчик использования найдёца? 

Нашёл вот как на двумерный массив bit разобрать пример. А собрать из этого bmp или иконку какнить можно?

Это сообщение отредактировал(а) Brodyaga - 3.6.2009, 10:30
PM MAIL   Вверх
GremlinProg
Дата 3.6.2009, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: нет
Всего: 106



Цитата(Brodyaga @  3.6.2009,  12:14 Найти цитируемый пост)
А собрать из этого bmp или иконку какнить можно?

можно, только нужно каждую строку выровнить на 2-х байтовой границе (паддинг заполнить нулями),
для CE: http://msdn.microsoft.com/en-us/library/ms959923.aspx


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Brodyaga
Дата 3.6.2009, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Так это получается у меня будет обычная БМП без прозрачности и т.д.? Тоесть просто нарисуется сконверченная пнг в бмп?
PM MAIL   Вверх
GremlinProg
Дата 3.6.2009, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: нет
Всего: 106



Цитата(Brodyaga @  3.6.2009,  12:39 Найти цитируемый пост)
Так это получается у меня будет обычная БМП без прозрачности и т.д.?

ну, тут надо смотреть документацию по твоей библиотеке

32-битный цветовой ключ содержит четыре компоненты: голубой, зеленый, красный + еще одну, которая может использоваться для прозрачности

если библиотека заполняет эту компоненту, то прозрачности можно добиться в таком битмапе через AlphaBlend: http://msdn.microsoft.com/en-us/library/aa452850.aspx

правда, только с пятой серсии CE

Добавлено через 5 минут и 35 секунд
но можно и без этого обойтись, по крайней мере для фоновой прозрачности, если знать ключ прозрачности

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


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Brodyaga
Дата 3.6.2009, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Цитата

ну, тут надо смотреть документацию по твоей библиотеке

32-битный цветовой ключ содержит четыре компоненты: голубой, зеленый, красный + еще одну, которая может использоваться для прозрачности

если библиотека заполняет эту компоненту, то прозрачности можно добиться в таком битмапе через AlphaBlend: http://msdn.microsoft.com/en-us/library/aa452850.aspx

правда, только с пятой серсии CE

Добавлено через 5 минут и 35 секунд
но можно и без этого обойтись, по крайней мере для фоновой прозрачности, если знать ключ прозрачности

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

ну ведь в пнг есть и полупрозрачность а в битмапе этого ведь никак не добиться...
PM MAIL   Вверх
GremlinProg
Дата 3.6.2009, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: нет
Всего: 106



Цитата(Brodyaga @  3.6.2009,  13:58 Найти цитируемый пост)
ну ведь в пнг есть и полупрозрачность а в битмапе этого ведь никак не добиться...

я про битмап и говорю: http://www.rsdn.ru/article/gdi/trsimple.xml

Добавлено через 2 минуты и 22 секунды
смотри по ссылке реализацию "альфа-канала"


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Brodyaga
Дата 3.6.2009, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Цитата

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

Сложности возникнут вот с чем. Мне неизвестен ни один графический пакет, позволяющий сохранять растры с альфа-каналом в формате, пригодном для AlphaBlend(). При создании такого растра программно мы можем сохранить его на диск (в формате Windows Bitmap 32-bit). Он прочитывается популярными программами типа ACDSee, но функции LoadBitmap() и LoadImage() отказываются его загружать. При попытке поместить его в ресурс rc.exe у меня вывалился с сообщением Internal error...

Но унывать не стоит. Мы можем подготовить растр в памяти, скомбинировав, например, два растра - с изображением объекта и его тени. 


А безконвертирования растров можно шденить получить растр подготовленный для выхода? могут ли какието программи в него сконвертить из пнг ?
PM MAIL   Вверх
Andrey44
Дата 3.6.2009, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: нет
Всего: 26



Цитата(Brodyaga @  3.6.2009,  14:35 Найти цитируемый пост)
могут ли какието программи в него сконвертить из пнг ?

Можно пнг сконвертировать в иконку и рисовать иконки. Или обязательно нужны именно пнг?


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Brodyaga
Дата 3.6.2009, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Не обязательно.. просто есть только пнг... но и сконвертить НОРМАЛЬНО в ико не получается... какието кваратики на пустом месте появляются... а иконки(*.ико) бывают с полупрозрачностью?
PM MAIL   Вверх
GremlinProg
Дата 3.6.2009, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: нет
Всего: 106



Цитата(Brodyaga @  3.6.2009,  16:35 Найти цитируемый пост)
А безконвертирования растров можно шденить получить растр подготовленный для выхода? могут ли какието программи в него сконвертить из пнг ?

http://students.uni-vologda.ac.ru/pages/pm01/kps/maps.htm
это еще вариант для установки альфа-канала на основе scanline 
т.е. с использованием SetDIBits и SetDIBitsToDevice
посмотри, может найдешь готовую оболочку (по крайней мере по ссылке вырисовывается класс Bitmap)


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Brodyaga
Дата 4.6.2009, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



чот я там не вижу функции SetDIBits.. и почему у функции CreateBitmap всего два параметра и созданный битмап нигде не сохраняется и не заполняется..

Кстати libpng не нашёл собранной для 5-ой CE... на сайте только для 4 есть. ПОэтому с ним не получица похоже :(

Это сообщение отредактировал(а) Brodyaga - 4.6.2009, 08:21
PM MAIL   Вверх
Brodyaga
Дата 4.6.2009, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Вообщем хрен с этим пнг.. сконвертил в кореле его в бмп.. вроде норм сконвертилось, на фоне белого цвета... следую инструкциям указанным тут сделал способом номер 2 (через TransparentBlt).
Но у меня много кнопок, удобнее было бы через ИмэджЛист, а вот с помощью него не работает :( Что я не так делаю:

Код

    HIMAGELIST hImageList=ImageList_Create(32,32,ILC_COLOR24|ILC_MASK,1,0);

    hBitmap=LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_BITMAP2));

    ImageList_Add(hImageList,hBitmap,(HBITMAP)RGB(255,255,255));

    ImageList_Draw(hImageList,0,hdc,0,0,ILD_TRANSPARENT);


Картинка рисуется с белым фоном... он не убирается.. почему? уже по всякому перепробовал..
PM MAIL   Вверх
GremlinProg
Дата 4.6.2009, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: нет
Всего: 106



Цитата(Brodyaga @  4.6.2009,  09:56 Найти цитируемый пост)
чот я там не вижу функции SetDIBits.. 

судя по этому циклу:
Код

for (int j = 0; j < cy; j++)
    {
        png_read_row(png_ptr, row, NULL);
        CopyRGBtoBGRA(GetScanLine(j), row, width);
    }


используется именно эти функции
Цитата(Brodyaga @  4.6.2009,  09:56 Найти цитируемый пост)
и почему у функции CreateBitmap всего два параметра и созданный битмап нигде не сохраняется и не заполняется.

это же не API,
это обертка над ней
Цитата(Brodyaga @  4.6.2009,  11:44 Найти цитируемый пост)
ImageList_Add(hImageList,hBitmap,(HBITMAP)RGB(255,255,255));

неправильно, третий параметр должен быть именно монохромным битмапом, если список создается с флагом ILC_MASK

либо генерируй маску, либо убери флаг ILC_MASK


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Brodyaga
Дата 4.6.2009, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Цитата

либо генерируй маску, либо убери флаг ILC_MASK


Если уберу, как мне белый фон тогда убрать при выводе изображения?
PM MAIL   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование мобильных устройств"
Alexeis

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

Все остальные вопросы по мобильным устройствам (КПК, смартфоны, телефоны, фотоаппараты и т.п),
не имеющие отношения к программированию, просьба размещать в разделе КПК, смартфоны, мобильники

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Платформы Windows Mobile и Windows Embedded | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.