Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Как разместить на форме PNG


Автор: Gremlin 7.11.2006, 20:40
Хочу сделать лампочку, которая то светлая то темная. Вставил картинку бмп, но она квадрат а лампочка круглая получилися некрасивые белые углы, ибо в битмапе нету прозрачного фона попробовал иконкой некрасивая перерисовка угловатое все. Вот думаю надо както png запихать. Может подскажете как это сделать или подскажет другую реализацию данной задачи? (лампочка красивая с тенями эфект выпуклоси smile)

Автор: Earnest 8.11.2006, 09:23
Каким образом формат изображения связан с угловатостью картинки? Цвета теряются, что ли?
В битмапе тоже можно заданный цвет сделать прозрачным, т.е. заменить заданным (цветом подложки). Функция называется что-то вроде LoadMappedBitmap. 
Если тебе нужна именно прозрачность (например, фон не одноцветный), то загрузи картинку в ImageList, с заданным прозрачным фоном, и рисуй оттуда.
И, наконец, если не ошибаюсь, иконка тоже может быть полноцветной. Только загружать ее нужно через LoadImage. Вроде бы. 

Автор: Gremlin 8.11.2006, 14:32
ну мне нужно такуюже красивую картинку как и стандартная IDI_ERROR
я добавил в проект иконку но не могу её загрузить smile 
разместил на форме пикчерс бокс IDC_IMAGE
CStatic * image = (CStatic*) GetDlgItem(IDC_IMAGE)
image->SetIcon..... и дальше хз как  smile ибо SetIcon(HICON hIcon) пытаюсь ::LoadIcon(IDI_ERROR) не робит


Автор: Rickert 8.11.2006, 16:48
Берёшь картинку, делаешь у неё определённый цвет там, где тебе надо чтобы было прозрачно. Например чёрный - пусть будет цветом прозрачности. В RGB системе это занчение (255, 255, 255). Создаёшь переменную типа CImage, вызываешь метод Load("путь к твоей картинке"), затем где-нибудь в нужный момент вызываешь transparentBlt()
Описание всего смотри в МСДНе.

ЗЫ
Не забывай про ReleaseDC() после каждого GetDC()

Автор: Earnest 9.11.2006, 07:38
Цитата(Rickert @  8.11.2006,  17:48 Найти цитируемый пост)
Например чёрный - пусть будет цветом прозрачности. В RGB системе это занчение (255, 255, 255). 

Это сильно... smile 

Gremlin, прежде чем делать SetIcon, нужно получить HICON. У тебя это не получается?
Если в ресурсах проекта иконка выглядит нормально, как надо, попробуй загрузить не LoadIIcon, а LoadImage. Только почитай внимательно про параметры функции.

Автор: Rickert 9.11.2006, 14:54
Earnest, тьфу, блин. (0, 0, 0) smile

Автор: Gremlin 9.11.2006, 18:34
Earnest с этим то вся и проблема как из идентификатора получить HICON ибо параметры в LoadIcon ( HINSTANCE hInstance,   LPCTSTR lpIconName) но как загрузить если она уже у меня  в проекте. 

Автор: Earnest 10.11.2006, 08:38
Что значит "в проекте"? В ресурсах? Так для этого LoadIcon и существует.
Код

psIconName = MAKEINTRESOURCE (IconID).

Автор: Gremlin 10.11.2006, 18:21
не я сделал так 
Код

HICON icon = AfxGetApp->LoadIcon(IDI_ERR);


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)