Как сделать Screensave в формате bmp?

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

Как сделать Screensave в формате bmp?

Сообщение Kytx » 26.07.2004 (Пн) 18:56

Помогите советом... Нужно сделать скринсайв в формате bmp и сохранить его в указанное место переменной место ПутьКСкринсайву = "e:\0001.bmp"

baha76
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 07.01.2004 (Ср) 10:59
Откуда: Ташкент

Сообщение baha76 » 27.07.2004 (Вт) 7:23

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

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

Сообщение Sirik » 27.07.2004 (Вт) 8:41

Размещаешь на форме Picture1
Код модуля:
Код: Выделить всё
Public 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 Const SRCCOPY = &HCC0020

Код формы (процедуры):
Код: Выделить всё
Sub Desk()
  Dim hDesk, hDeskDC
 
  hDesk = GetDesktopWindow()
  hDeskDC = GetDC(hDesk)
  BitBlt Picture1.hDC, 0, 0, Width, Height, hDeskDC, 0, 0, SRCCOPY

  SavePicture Picture1.Image, [b]"C:\Picture.bmp"[/b]

End Sub

Kytx
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 26.07.2004 (Пн) 18:43

Сообщение Kytx » 27.07.2004 (Вт) 8:42

Именно

baha76
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 07.01.2004 (Ср) 10:59
Откуда: Ташкент

Сообщение baha76 » 27.07.2004 (Вт) 9:28

Ну вот, тебе уже ответили. :)

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

Сообщение Sirik » 27.07.2004 (Вт) 9:56

Хотя мне больше нравиться сохранять в формате JPG. Меньше места при не большой потере качества.
Для сравнения: BMP - 2,3Mb, JPG - 76Kb !!!!

EUR
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 23.06.2004 (Ср) 10:27
Откуда: Москва

Сообщение EUR » 27.07.2004 (Вт) 10:09

Sirik писал(а):Хотя мне больше нравиться сохранять в формате JPG. Меньше места при не большой потере качества.
Для сравнения: BMP - 2,3Mb, JPG - 76Kb !!!!


А каким образом (я использую savtojpeg.dll, но, может быть, есть способ лучше)?

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

Сообщение Sirik » 27.07.2004 (Вт) 10:13

EUR писал(а):
Sirik писал(а):Хотя мне больше нравиться сохранять в формате JPG. Меньше места при не большой потере качества.
Для сравнения: BMP - 2,3Mb, JPG - 76Kb !!!!


А каким образом (я использую savtojpeg.dll, но, может быть, есть способ лучше)?


Конечно есть: у меня есть библиотека, которая в 2 мига преобразует:
BMP, JPG и GIF в друг друга.

Если надо - дай мыло, вышлю

EUR
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 23.06.2004 (Ср) 10:27
Откуда: Москва

Сообщение EUR » 27.07.2004 (Вт) 11:45

Кинь, плиз

Kytx
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 26.07.2004 (Пн) 18:43

Сообщение Kytx » 27.07.2004 (Вт) 17:24

А если у меня формы нет в принципе??? Неужели нужно ее обязательно создать? Я понимаю, что ее можно и не показывать, но разве нельзя без ее обойтись?

Kytx
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 26.07.2004 (Пн) 18:43

Сообщение Kytx » 27.07.2004 (Вт) 17:28

А bmp мне нужен для декодирования картинки, в этом формате все понятно - три байта на пиксель и при желании можно анализировать, что на экране, что с этим происходит и т.п. А вот jpeg фиг разгадаешь, если кто знает как пусть подскажет...

Kytx
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 26.07.2004 (Пн) 18:43

Сообщение Kytx » 27.07.2004 (Вт) 17:29

Sirik кинь плиз библиотеку на мыло kytx@mail.ru и научи как ей пользоваться

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 27.07.2004 (Вт) 17:31

У меня похожая проблема! Я тут на пикчербоксе нарисовал всяких апи-функций и мне надо его в БМП сохранить. Подскажите,
SavePicture pbDoc.Picture, "c:\Picture.bmp" не помогает! Пишет не тот формат!
SavePicture pbDoc.Image,"C:\Picture.bmp"
работает тока так, но не сохраняет мои линии. :(

Kytx
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 26.07.2004 (Пн) 18:43

Сообщение Kytx » 27.07.2004 (Вт) 21:06

Наверное у меня кривые руки или мозги, но как ты сказал, сделать не получилось:(

Путем долгих мытарств я догнал, что GetDesktopWindow() и DetDC() тоже нужно декларировать, т.е. код в модуле был исправлен так:

Public Declare Function GetDesktopWindow Lib "user32.dll" () As Long
Public Declare Function GetDC Lib "user32.dll" (ByVal hWnd As Long) As Long
Public 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 Const SRCCOPY = &HCC0020

sub main ()
call form1.desk
end sub

a в коде формы так из-за ошибки "Comple error: Syntax error":

Sub Desk()
Dim hDesk, hDeskDC
hDesk = GetDesktopWindow()
hDeskDC = GetDC(hDesk)
BitBlt Picture1.hDC, 0, 0, Width, Height, hDeskDC, 0, 0, SRCCOPY
SavePicture Picture1.Image, "C:\Picture.bmp"
End Sub

Однако, после запуска программы в C:\Picture.bmp находился либо серый прямоугольник, либо картинка которую предворительно устанавливал в picture1.picture, вернее даже ее часть которая помещалась в picture1. Объясни плиз, где я напортачил.

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 27.07.2004 (Вт) 21:27

Kytx писал(а):А bmp мне нужен для декодирования картинки, в этом формате все понятно - три байта на пиксель и при желании можно анализировать, что на экране, что с этим происходит и т.п. А вот jpeg фиг разгадаешь, если кто знает как пусть подскажет...

http://www.wotsit.org Вам в помощь! Правда, нужно знание английского.
2Sirik: А мне можно приобщиться к чудо-библиотеке?
Листинги не горят!

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

Сообщение Sirik » 28.07.2004 (Ср) 10:06

По просьбе трудящихся вот.

Если будут проблеммы пишите.
Вложения
Графика.zip
Вот, собственно и она
(130.51 Кб) Скачиваний: 41


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

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

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

    TopList