Вырезать кусок картинки в проге

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

Вырезать кусок картинки в проге

Сообщение Алекс » 18.06.2003 (Ср) 15:41

Как разрезать картинку прямо в проге и раскидать куски по Image'ам
Алекс.

Александр Андреев
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 145
Зарегистрирован: 09.04.2003 (Ср) 16:43
Откуда: Н.Новгород

Сообщение Александр Андреев » 18.06.2003 (Ср) 16:38

А картинка в виде файла или она уже на форме висит?

Алекс
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 30.04.2003 (Ср) 15:59
Откуда: Краснодар

Сообщение Алекс » 19.06.2003 (Чт) 8:42

В виде файла :)
А какая разница??
Алекс.

zzoom
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 13.06.2003 (Пт) 10:29
Откуда: Рига

Сообщение zzoom » 19.06.2003 (Чт) 9:23

Используй BitBlt
Код: Выделить всё
Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (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

Только Imag'ы не подойдут у них DC нету, можешь по PictureBox'ам раскидать или прямо по форме

kashey
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 17.01.2003 (Пт) 15:44

Сообщение kashey » 19.06.2003 (Чт) 11:33

ЧТО ТО Я НЕ СОВСЕМ ПОНЯЛ :shock:
если можно примерчик (только не на мыло)

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4158
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 19.06.2003 (Чт) 15:53

PaintPicture позволяет напечатать на одну картинку любой фрагмент другой. API не требуется.

zzoom
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 13.06.2003 (Пт) 10:29
Откуда: Рига

Сообщение zzoom » 19.06.2003 (Чт) 18:22

http://www.vbstreets.ru/default.asp?page=library&type=old&id=bitblt_rus - советую почитать, очень неплохая статья о блитинге (тут же и пример)

Алекс
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 30.04.2003 (Ср) 15:59
Откуда: Краснодар

Сообщение Алекс » 21.06.2003 (Сб) 7:46

А нельзя более конкретным примером.
Например разрезать картинку 2 линиями по вертикали на три равные части и потом раскидать по PictureBox'ам.
Алекс.

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

Сообщение Rainbow » 21.06.2003 (Сб) 12:51

тебе же Mikle ответил, как сделать
держи примерчик

Код: Выделить всё
Dim x As IPictureDisp, i As Long
Set x = LoadPicture("с:\MyPic.jpg")

Dim nWidthInTwips As Long, nHeightInTwips As Long
For i = 0 To 2
    nWidthInTwips = Picture1(i).ScaleX(x.width, vbHimetric, vbTwips)
    nHeightInTwips = Picture1(i).ScaleY(x.Height, vbHimetric, vbTwips)
   
    Picture1(i).width = nWidthInTwips \ 3
    Picture1(i).Height = nHeightInTwips
   
    Picture1(i).PaintPicture x, 0, 0, nWidthInTwips \ 3, nHeightInTwips, i * (nWidthInTwips \ 3), 0, nWidthInTwips \ 3, nHeightInTwips
Next


Picture1 - массив PictureBox'ов

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4158
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 21.06.2003 (Сб) 14:23

Во! Пока я писал примерчик, Rainbow уже ответил. Вот рабочий вариант. Загружает Picture, вырезает из него любой фрагмент, при необходимости масштабирует и сохраняет.

http://www.tuapse-mikle.narod.ru/pic.zip

Алекс
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 30.04.2003 (Ср) 15:59
Откуда: Краснодар

Сообщение Алекс » 23.06.2003 (Пн) 12:05

Спасибо Mikle классный пример!!!
RAinbow ты уж не обижайся, но не пашет твой код...
Алекс.

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 07.08.2003 (Чт) 19:39

Алекс писал(а):RAinbow ты уж не обижайся, но не пашет твой код...


Однако, елси подумать, то его очень легко заставить работать.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 07.08.2003 (Чт) 20:30

Mikle писал(а):Во! Пока я писал примерчик, Rainbow уже ответил.


Не я один ошибаюсь 8) :roll:
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 07.08.2003 (Чт) 20:45

сели тебе нади именно в ИМЕДЖИ используй мою длл - Dllpset - рулезная весчь (или alpha24) http://bbs.vbstreets.ru/download.php?id=148
http://poetry.mooo.com
http://poetry.myboard.info
«Человек есть нечто, что до́лжно превзойти» (Ф. Ницше)


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

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 4

    TopList