Как на кпоке используя Пиктуре сделать прозрачный фон...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
User32
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 6
Зарегистрирован: 01.07.2005 (Пт) 12:46
Откуда: Russia, Moscow, ...

Как на кпоке используя Пиктуре сделать прозрачный фон...

Сообщение User32 » 18.07.2005 (Пн) 15:04

Есть некая кнопка на форме со зечком в формате BMP и БЕЛЫМ фоном вокруг значка, как мне сделать этот фон прозрачным, чтобы он сливался с цветом самой формы...
Незнание некоторых фактов сполна компенсируется знанием некоторых принципов...

Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Сообщение Tin » 18.07.2005 (Пн) 15:37

Самое простое сделать GIF or ICO
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88

User32
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 6
Зарегистрирован: 01.07.2005 (Пт) 12:46
Откуда: Russia, Moscow, ...

Сообщение User32 » 18.07.2005 (Пн) 15:51

В том то и дело что я неиду лёгким путём....
Незнание некоторых фактов сполна компенсируется знанием некоторых принципов...

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 18.07.2005 (Пн) 15:53

User32 писал(а):В том то и дело что я неиду лёгким путём....
Не ходи - никто не заставляет. Тебе его просто показали, а дальше уже сам решай - или в гамаке и стоя, или быстро и без геморроя.

User32
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 6
Зарегистрирован: 01.07.2005 (Пт) 12:46
Откуда: Russia, Moscow, ...

Сообщение User32 » 18.07.2005 (Пн) 16:04

Ennor писал(а):
User32 писал(а):В том то и дело что я неиду лёгким путём....
Не ходи - никто не заставляет. Тебе его просто показали, а дальше уже сам решай - или в гамаке и стоя, или быстро и без геморроя.


Хорошо, ну а если мне нужно вставить BMP большого размера прямо на кнопку но с очень большим числом пикселей.

GIF палира в 256 цветов негодится...

Тогда что... предложишь умник.... а...
Незнание некоторых фактов сполна компенсируется знанием некоторых принципов...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 18.07.2005 (Пн) 16:06

User32 писал(а):Тогда что... предложишь умник.... а...

Тогда тебе предложат воспользоваться поиском.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 18.07.2005 (Пн) 17:01

User32, удивись: у кнопки есть свойства MaskColor и UseMaskColor.
Никакого геморроя не нужно. Совсем.
Изображение

User32
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 6
Зарегистрирован: 01.07.2005 (Пт) 12:46
Откуда: Russia, Moscow, ...

Сообщение User32 » 18.07.2005 (Пн) 17:15

tyomitch писал(а):User32, удивись: у кнопки есть свойства MaskColor и UseMaskColor.
Никакого геморроя не нужно. Совсем.


Спасибо, я токо что это узна из другого форума...

Делаем в свойствах кнопки UseMaskColor = True
и в MaskColor выбираем нужный цвет (цвет который мы выбрали для прозрачности в BMP файле - залив фон)...

ВОТ ИСТИНЫЙ ОТВЕТ...

Ане
alibek писал(а):Тогда тебе предложат воспользоваться поиском.


Спасибо tyomitch тебе...
Незнание некоторых фактов сполна компенсируется знанием некоторых принципов...

Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Сообщение Tin » 19.07.2005 (Вт) 6:53

Я вот тока не понял - нахрена на кнопку натягивать рисунок больших размеров?
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88

User32
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 6
Зарегистрирован: 01.07.2005 (Пт) 12:46
Откуда: Russia, Moscow, ...

Сообщение User32 » 19.07.2005 (Вт) 9:18

Нужно - значит нужно....

Настоящий программист не ищит лёгких путей и непасует перед трудностями...
Незнание некоторых фактов сполна компенсируется знанием некоторых принципов...

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 19.07.2005 (Вт) 12:30

Программист - самураю кибепространства подобно

Избирает труднейший путь в поисках славы

Борясь с преградами на пути

Открытия неизведанного, лежащего под изображением на кнопке.

Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Сообщение Tin » 20.07.2005 (Ср) 7:26

У... Потянуло РС на хокку :)
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88

Sol
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 23.04.2006 (Вс) 11:32
Откуда: Москва

Сообщение Sol » 19.05.2006 (Пт) 15:33

А как быть, если фон формы не одноцветный, - а изображение, можно ли сделать так, чтобы фон контрола сливался бы с фоном формы, другими словами, можно ли реализовать свойство BackStyle label-a для других контролов?
- Внимание, Земля, говорит борт 13, у нас отказал бортовой компьютер, что делать?
- Борт 13, борт 13, это диспетчер, слышите меня? Играйте пока на резервном, играйте на резервном.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 19.05.2006 (Пт) 17:27

Sol, для каких таких других?

И вообще попробуй перефразировать, а то плохо понятно что нужно...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Sol
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 23.04.2006 (Вс) 11:32
Откуда: Москва

Сообщение Sol » 19.05.2006 (Пт) 17:39

Ну в частности - Frame. Смысл в том, чтобы установить на форму фон в виде изображения BMP и чтобы ничего его не закрывало и были видны только контуры стандартных элементов управления.
- Внимание, Земля, говорит борт 13, у нас отказал бортовой компьютер, что делать?
- Борт 13, борт 13, это диспетчер, слышите меня? Играйте пока на резервном, играйте на резервном.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 19.05.2006 (Пт) 17:52

С Frame, кажись, не пройдет...
А я все практикую лечение травами...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 19.05.2006 (Пт) 17:53

Предлагаю так:

С помощью BitBlt скопировать ту, часть картинки, которая лежит под элементом управления. Скопировать нужно будет именно в клиентскую область окна.

Для справки:
GetWindowDC - глобальная область окна, включая заголовки бордеры и тд.

GetDC - клиентская область.

Только тут есть один момент:
Если у тебя на форме картинка и поверх неё кнопка, нельзя копировать на кл. область кнопки картинку с hDc формы - потому что на кнопку скопируется не то что под ней, а само её изображение.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 19.05.2006 (Пт) 17:56

Ну тогда можно практически без кода это сделать. Просто на Frame положить такой рисунок (и так), чтобы казалось, будто он прозрачный...
А я все практикую лечение травами...

Sol
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 23.04.2006 (Вс) 11:32
Откуда: Москва

Сообщение Sol » 19.05.2006 (Пт) 18:28

Тогда такой вопрос: как узнать handle to destination DC кнопки (фрейма, и т.д.) ?
- Внимание, Земля, говорит борт 13, у нас отказал бортовой компьютер, что делать?
- Борт 13, борт 13, это диспетчер, слышите меня? Играйте пока на резервном, играйте на резервном.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 19.05.2006 (Пт) 18:31

Говорилось уже:
GetWindowDC
А я все практикую лечение травами...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 19.05.2006 (Пт) 19:43

Twister писал(а):Говорилось уже:
GetWindowDC


Неа, GetDC.

Если рисовать на GetWindowDC то мы зарисуем поверх бордеров.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 19.05.2006 (Пт) 19:47

Ну автор уточнений не приводил...
А я все практикую лечение травами...

Sol
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 23.04.2006 (Вс) 11:32
Откуда: Москва

Сообщение Sol » 19.05.2006 (Пт) 19:54

Если я правильно понял - бордеры -ето границы контрола? Желательно, чтобы отображались. Разбираюсь вот с GetDC

А почему не работает так
Код: Выделить всё
BitBlt _
  Picture2.hdc, 0, 0, 100, 100, _
  Picture1.hdc, 0, 0, _
SRCCOPY
?

(отражается черный квадрат)

И еще: я так понял, у фрейма вообще нет этого самого hDC?
- Внимание, Земля, говорит борт 13, у нас отказал бортовой компьютер, что делать?
- Борт 13, борт 13, это диспетчер, слышите меня? Играйте пока на резервном, играйте на резервном.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 19.05.2006 (Пт) 20:03

А что есть SRCCOPY? Ты эту константу объявил? Если нет - тогда и не надо. Есть vbSrcCopy.
___________

А у контролов, у которых нет hDC нужно его получать с помощью

GetDC(элемент_управления.hWnd)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Sol
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 23.04.2006 (Вс) 11:32
Откуда: Москва

Сообщение Sol » 19.05.2006 (Пт) 21:03

Спасибо, работает! :)
- Внимание, Земля, говорит борт 13, у нас отказал бортовой компьютер, что делать?
- Борт 13, борт 13, это диспетчер, слышите меня? Играйте пока на резервном, играйте на резервном.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

    TopList  
cron