Работа с графикой

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

Работа с графикой

Сообщение Максим » 16.04.2003 (Ср) 19:10

Кто подскажет, как сделать скриншот экрана и записать всё его содержимое в переменную, чтобы потом его можно было открыть в PictureBox или Image? :mrgreen:

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

Сообщение Amed » 16.04.2003 (Ср) 20:22

Это надо делать с помощью ф-ции API BitBlt:
Код: Выделить всё
'На форме расположено окно PictureBox с именем pic1, параметр HasDC=True

'Код формы:
Option Explicit
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

'Дескриптор десктопа
Private DC1 As Long
'Дескриптор PictureBox
Private DC2 As Long
'Необходимая константа
Private Const dwRop As Long = &HCC0020

Private Sub Form_Load()
'Получаем дескрипторы десктопа и PictureBox
DC1 = GetWindowDC(GetDesktopWindow)
DC2 = GetWindowDC(pic1.hwnd)
End Sub

Public Sub SaveDC()
Dim ScreenSizeX as Long
Dim ScreenSizeY as Long

ScreenSizeX = Screen.Width / Screen.TwipsPerPixelX
ScreenSizeY = Screen.Height / Screen.TwipsPerPixelY

'Копируем картинку с "устройства" десктопа на "устройство" PictureBox
BitBlt DC2, 0, 0, ScreenSizeX , ScreenSizeY, DC1, 0, 0, dwRop
End Sub

Private Sub pic1_Click()
SaveDC
End Sub

'Если сделать копирование "не по клику", то картинка в PictureBox сотрётся... :-|
Последний раз редактировалось Amed 16.04.2003 (Ср) 20:58, всего редактировалось 1 раз.

Максим
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 16.04.2003 (Ср) 18:00

Сообщение Максим » 16.04.2003 (Ср) 20:53

Спасибо :mrgreen:


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

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

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

    TopList