Помогите с BitBlt

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Помогите с BitBlt

Сообщение XairOn » 09.01.2005 (Вс) 16:59

Здравствуйте, у меня такая проблема с BitBlt: из Picture1 в Picture2 копирую изображение, причем Picture1 имеет больший размер чем Picture2, коипрование присходит в Picture2_MouseMove(...) и проблема заключается в том, что каждый раз когда пользователь нажимает кнопку на Picture2 изображение копируется из координат 0, 0, а мне нужно, что бы именно из той точки в которую ткнул пользователь (вобщем что-то вроде перетаскивания изображения должно быть). Как это сделать?
Вот отрывок кода:
Код: Выделить всё
BitBlt Picture2.hDC, 0, 0, Picture2.Width / 15, Picture2.Height / 15, Picture1.hDC, <???>, <???>, SRCCOPY

P.S. Не забывайте, что все это происходит в событии MouseMove. Если бы нужно было в Click или MouseDown, было бы слишком просто :-)

deepslam
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Сообщение deepslam » 09.01.2005 (Вс) 17:17

попробуй StretchBlt :)

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 09.01.2005 (Вс) 18:46

deepslam писал(а):попробуй StretchBlt


И как это должно мне помочь??? Там то же самое получится, я не знаю как определить координаты точки источника из которой нужно копировать! В этом-то и есть мой вопрос - как её найти эту точку???

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

Re: Помогите с BitBlt

Сообщение Ennor » 09.01.2005 (Вс) 18:54

XairOn писал(а):...
P.S. Не забывайте, что все это происходит в событии MouseMove. Если бы нужно было в Click или MouseDown, было бы слишком просто :-)

Ну и что сложного-то? Объявляешь в форме какие-нить CurX, CurY и в них пишешь текущие координаты мыши (они у тебя всегда есть в MouseMove()). Ну и при клике используешь эти значения так, как тебе надо...

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 09.01.2005 (Вс) 18:55

Код: Выделить всё
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.Caption = X & "\" & Y
End Sub

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 09.01.2005 (Вс) 19:07

мда... вы меня видать не поняли совсем... картинки (вернее PictureBox'ы, содержащие картинки) разного размера, и получается нессответствие координат и проблема в том, что бы найти формулу по которой эти координаты будут высчитываться!

Если бы всё было так просто, как у вас...

deepslam
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Сообщение deepslam » 09.01.2005 (Вс) 19:12

А если так написать:
Код: Выделить всё
BitBlt Picture2.hDC, 0, 0, Picture2.Width / 15, Picture2.Height / 15, Picture1.hDC, picture2.left + X,picture2.top+Y, SRCCOPY

хотя я может не совсем понял...

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 09.01.2005 (Вс) 19:20

Скорее всего ты не так понял. Зачем picture2.left и picture2.top - он ведь на месте стоит?!

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 09.01.2005 (Вс) 19:26

XairOn
А тема: "Немогу подобрать свойство к PictureBox." :wink:

Насколько я понял нужно:
Пользователь двигает мышкой по пикчуре и перемещается по ней...
:arrow: X = PictureSmall.Ширина / PictureBig.Ширина * mouseX
:arrow: Y = PictureSmall.Высота / PictureBig.Высота * mouseY
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 10.01.2005 (Пн) 0:51

А тема: "Немогу подобрать свойство к PictureBox."

KDima > Молодец, память хорошая :-) Хотя не так давно уж это было.

За совет спасибо, сам справился :-)


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

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

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

    TopList