Пикчербокс и две фотки

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
VINNY-PYX
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 125
Зарегистрирован: 02.02.2004 (Пн) 17:24
Откуда: из роддома

Пикчербокс и две фотки

Сообщение VINNY-PYX » 29.01.2005 (Сб) 23:17

У меня есть пикчербокс, две фотографии одинаковых размеров. Одна фотография находится поверх другой. Как я могу сделать (что использовать) чтобы при стирании верхней фотографии (не всей) под ней была видна нижняя фотография?

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 29.01.2005 (Сб) 23:36

Ручками перерисовывать нужную?

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 30.01.2005 (Вс) 1:29

Сразу ничего на ум не приходит. Разве что можешь положить одну фотку на форму и повесить ее поверху другой фотки. Естественно, форма должна быть без рамки, чтобы никто не догадался, что она есть :) Потом при стирании устанавливаем видимые границы формы с помощью SetWindowRgn. Таким образом часть формы с верхним рисунком спрячется, а нижний кусок будет виден. Но это способ так себе...
То, что для одних константа, для других только переменная...

Zer
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 460
Зарегистрирован: 26.09.2003 (Пт) 13:08
Откуда: Нижний Новгород

Сообщение Zer » 30.01.2005 (Вс) 1:41

Ну, можешь попробовать две фишки:
1) Есть API, которая позволяет делать на рисунке определенный цвет прозрачным. Можешь её поискать... Надеюсь ничего не напутал...
2) Опередлять в каких точках изображение стёрто, и вставлять туда точки из второго рисунка...
Microsoft DirectX - Маломягкий Прямой Х...
Не откладывай на завтра то, что можно выпить сегодня...

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 30.01.2005 (Вс) 1:56

Если стирание происходит в прямоугольных участках, можно создать compatible DC, скопировать в него из первого рисунка часть, соответствующую стертому участку второго и затем скопировать оставшуюся часть второго рисунка. После этого BitBlt в hDC пикчербокса.

VINNY-PYX
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 125
Зарегистрирован: 02.02.2004 (Пн) 17:24
Откуда: из роддома

Сообщение VINNY-PYX » 30.01.2005 (Вс) 14:54

Блин, вы тут наговорили такое, что я во снах (пока что) не видел! Может кто-нибудь поможет (хотя бы чуть-чуть)?

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 31.01.2005 (Пн) 1:30

Ндя, способ с BitBlt хорош... :D Действительно, что тебе стирать-то нужно - прямоугольную, или произвольную область?
То, что для одних константа, для других только переменная...

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 31.01.2005 (Пн) 12:15

Ну вот накромсал, дальше сам разбирайся :wink:
Вложения
Layers.rar
(42.28 Кб) Скачиваний: 15
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 31.01.2005 (Пн) 13:44

Вот пример, может поможет
Вложения
Один рисунок+другой.zip
(14.35 Кб) Скачиваний: 17

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 31.01.2005 (Пн) 13:58

Совсем торможу, блин :) Можно ведь все намного проще сделать. Если фотки лежат в отдельных PictureBox-ах, то можно применить стандартный PaintPicture:

Picture2.PaintPicture Picture1.Picture, 10, 10, 50, 50, 10, 10, 50, 50

Здесь подразумевается, что основной рисунок в Picture2, а "задний" в Picture1. Таким образом сздается эффект, что в основном рисунке появилась "дырка" в координатах 10х10 размером 40х40.
То, что для одних константа, для других только переменная...

Zer
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 460
Зарегистрирован: 26.09.2003 (Пт) 13:08
Откуда: Нижний Новгород

Сообщение Zer » 02.02.2005 (Ср) 0:23

Odrick: А если точки размером 1х1 и их n*1000 штук??? :?
Microsoft DirectX - Маломягкий Прямой Х...
Не откладывай на завтра то, что можно выпить сегодня...

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 02.02.2005 (Ср) 19:23

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


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

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

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

    TopList  
cron