Работа с DC

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
arechemist
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 173
Зарегистрирован: 24.10.2003 (Пт) 8:45

Работа с DC

Сообщение arechemist » 12.02.2004 (Чт) 11:52

Подскажите пожалуйста:

Из пикчур бокса хочу перекопировать изображение в DC, а из него в другой пикчур.

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

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 12.02.2004 (Чт) 12:35

А... зачем?
Почему ты не можешь просто скопировать?
Picture2.Picture = Picture1.Picture?
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

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

Сообщение Amed » 12.02.2004 (Чт) 12:49

BitBlt Picture2.hdc, 0, 0, 100,100, Picture1.hdc, 0, 0, vbSrcCopy

"Другой hdc" и есть Picrure2.hdc, а иначе надо создавать новый... Что, в общем-то, не нужно...

arechemist
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 173
Зарегистрирован: 24.10.2003 (Пт) 8:45

Сообщение arechemist » 12.02.2004 (Чт) 18:13

ДА не в этом дело, я просто хочу врубиться как создавать DC и с ним работать...
А задачку придумал просто как пример вот.
Напишите пожалуйста код с использованием DC

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 13.02.2004 (Пт) 2:16

Вот тебе простой примерчик, помести на форму 2 Picturebox'а, поставь у них свойства AutoRedraw=True и ScaleMode=3(Pixel), в первый загрузи какой-нибудь рисунок. В форму вставь этот код:
Код: Выделить всё
Private Sub Command1_Click()
Call BitBlt(CompDC, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, Picture1.hdc, 0, 0, vbSrcCopy) 'Копируем изображение из Picture1 в DC
Call BitBlt(Picture2.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, CompDC, 0, 0, vbSrcCopy) 'Копируем изображение из DC в Picture2
Picture2.Refresh 'Обновляем Picture2
End Sub

Private Sub Form_Load()
CompDC = CreateCompatibleDC(Picture1.hdc) 'Создаём совместимый DC
OldBM = SelectObject(CompDC, Picture1.Picture) 'Создаем в нём поле для рисунка, по параметрам совподающее с Picture1.Picture
End Sub

Private Sub Form_Unload(Cancel As Integer)
Call SelectObject(CompDC, OldBM) 'Возвращаем старый рисунок в DC
Call DeleteDC(CompDC) 'Удаляем DC
End Sub


Добавь ещё можуль к проекту и встваь туда это:
Код: Выделить всё
Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

Public OldBM As Long, CompDC As Long

При нажатии на кнопку изображение будет копироваться из Picture1 в созданный DC, а затем из него в Picture2.
Нет ничего невозможного для человека с интеллектом.

arechemist
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 173
Зарегистрирован: 24.10.2003 (Пт) 8:45

Сообщение arechemist » 13.02.2004 (Пт) 16:18

Kostyan, Спасибо большое!!!


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 26

    TopList