Как сохранить картинку в .bmp определённого размера?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Как сохранить картинку в .bmp определённого размера?

Сообщение xenomorph » 15.02.2007 (Чт) 0:09

Привет Всем!

Как отресайзить картинку знаю - StretchBlt.

А вот как сохранить ЛЮБУЮ picturebox1 в 600*600 пикселей?

Чтоб можно было задать размер как в mspaint по ctrl+E.
--
Заранее огромное спасибо!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 15.02.2007 (Чт) 0:18

Ну и меняй размер PictureBox, в чем проблема?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 15.02.2007 (Чт) 0:24

Как отресайзить картинку знаю - StretchBlt.
ну так попробуй оттресайзить в 600 на 600, а потом сохранить.

И будет то же самое, что в "в mspaint по ctrl+E. "
Человек рождён для того, чтобы достичь жизни...

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

re

Сообщение xenomorph » 15.02.2007 (Чт) 0:26

2BV:

хех ... у пикчурбокса длина не в пикселях.
Как сделать его длинну равной 600?

Я понимаю что можно туды загрузить 600*600 и сделать аутофит,
посчитать сколько это в ЕГО единицах, и высчитать коеффициент ...

а можно как нить по людски а не через Ж?

ИМХО там будет неточное соответствие и при использовании К, результирующая картинка может быть 601 пикс. из-за неточности просчёта.

Если для К приближаемого к тестовому 600*600 всё будет ОК,
то для 10000 я уже не уверен ...

Я не прав?
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

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

Сообщение Хакер » 15.02.2007 (Чт) 0:33

Borderstyle ставим 0
Width = 800 * Screen.TwipsPerPixel
Height = 600 * Screen.TwipsPerPixel
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

this is it!

Сообщение xenomorph » 15.02.2007 (Чт) 0:51

2Хакер

ОНО! Спасибо!
--
ХАКЕРЫ РУЛЯТ!
СВОБОДУ КЕВИНУ МИТНИКУ!!
СНИМИТЕ С МЕНЯ СМИРИТЕЛЬНУЮ РУБАШКУ!!!
--
Всегда любил хэксороФФ!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Кому надо - не забудтье Х\У!

Сообщение xenomorph » 15.02.2007 (Чт) 1:08

Код: Выделить всё
'Модуль:
'===============
mod_SetDimsInPixels
'===============
Option Explicit
Public Sub SetPicDimsInPixels(ByRef P As PictureBox, PixelWidth As Long, PixelHeight As Long)
    With P
        .Width = PixelWidth * Screen.TwipsPerPixelX
        .Height = PixelHeight * Screen.TwipsPerPixelY
        .Visible = True
    End With
End Sub
Public Sub SetObjDimsInPixels(ByRef O As Object, PixelWidth As Long, PixelHeight As Long)
    With O
        .Width = PixelWidth * Screen.TwipsPerPixelX
        .Height = PixelHeight * Screen.TwipsPerPixelY
        .Visible = True
    End With
End Sub
'===============
Последний раз редактировалось xenomorph 15.02.2007 (Чт) 1:09, всего редактировалось 1 раз.
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

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

Сообщение Хакер » 15.02.2007 (Чт) 1:09

:lol:
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: re

Сообщение BV » 15.02.2007 (Чт) 1:23

xenomorph писал(а):2BV:

хех ... у пикчурбокса длина не в пикселях.


:roll:
Разумеется. В Twips. Выставь у формы ScaleMode = vbPixels и наступит тебе счастье.

xenomorph писал(а):ОНО! Спасибо!
--
ХАКЕРЫ РУЛЯТ!
СВОБОДУ КЕВИНУ МИТНИКУ!!
СНИМИТЕ С МЕНЯ СМИРИТЕЛЬНУЮ РУБАШКУ!!!
--
Всегда любил хэксороФФ!


:roll:
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

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

Сообщение Amed » 15.02.2007 (Чт) 1:27

xenomorph, нет слов :lol:


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

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

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

    TopList