СообЧа > База Знаний > Программирование > Visual Basic > Графика и Мультимедиа

Вопрос

Где взять пример эквалайзера (для микрофона)?

Ответ

Вот пример: audiomonitor.zip

Ivan Rozhuk

Вопрос

Где можно взять пример работы с MCI?

Ответ

В примерах из MSDN mci.zip.

Anton Lozovski

Вопрос

Как в VB отобразить Flash-анимацию?

Ответ

   Просто проигрывать анимацию можно с помощью ActiveX контрола, называется "Shockwave flash" (flash.ocx), поставляется скорее всего с Macromedia Flash, а может быть и с плеером…
На http://vbnet.ru были примеры проигрывания Flash.

Вопрос

Как в VB провести плавную прямую через три точки?

Ответ

Вот выдержки из доки по Win32 API. Используй линию Безье

BOOL PolyBezier(
HDC hdc, // handle to device context
CONST POINT *lppt, // pointer to endpoints and control points
DWORD cPoints // count of endpoints and control points
);


Расположение в gdi32.dll

The POINT structure defines the x- and y- coordinates of a point.
typedef struct tagPOINT { // pt
LONG x;
LONG y;
} POINT;


Смотри также:
ChildWindowFromPoint, GetBrushOrgEx, PtInRect, SetBrushOrgEx, WindowFromPoint

@HT0X@

Вопрос

А как мне вывести на указанный участок формы какую-нибудь букву?
Т.е. я задаю координаты, и там появляется буква.

Ответ

Me.CurrentX=…
Me.CurrentY=…
Me.Print "Текст"

Павел Сурменок

Вопрос

Как записать звук с микрофона?

Ответ

Recording WAV file
'----
Private Declare Function mciSendString Lib "winmm.dll" Alias _
"mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

Private Sub cmdRecordFromCD_Click() ' RECORD WAV
Dim i As Long, RS As String, cb As Long, t#
On Error Resume Next
RS = Space$(128)
Kill "c:\cdtest.wav"
cmdPlayCD.Value = True
i = mciSendString("open new type waveaudio alias mywav", RS, 128, cb)
i = mciSendString("record mywav", RS, 128, cb)
t# = Timer + 1: Do Until Timer > t#: DoEvents: Loop
i = mciSendString("stop mywav", RS, 128, cb)
i = mciSendString("save mywav c:\cdtest.wav", RS, 128, cb)
i = mciSendString("close mywav", RS, 128, cb)
cmdStopCD_Click
On Error GoTo 0
End Sub


@LEXis

Вопрос

Как изменить общий уровень громкости в системе?

Ответ

Смотри пример: Volume.zip

Krueger

Вопрос

Каким способом можно конвертировать размеры рисунков ? Например рисунок любого размера в 32х32 то есть подгонять под размеры например иконок.

Ответ

Можно функцией PaintPicture (не API).

Артем Кривокрисенко

АПИ функция StretchBlt позволяет произвольно изменять размеры картинок.

Ivan R

Вопрос

Как можно засунуть WAV, AVI в ресурсы, а потом их воспроизвести?

Ответ

Цитата из MSDN:

The following code is a resource script that can be compiled by using the 16-bit and 32-bit versions of Rc.exe.

   //////
// Myres.rc — 16 & 32 bit script. This must be compiled into two
  file://.res files using the 16 & 32 bit versions of RC.
   //////
 // Wave Resources — You must copy these files from your \Windows
// directory to the directory where your .rc script resides.

    CHIMES WAVE DISCARDABLE "Chimes.wav"
    DING WAVE DISCARDABLE "Ding.wav"

Steps to Create a Resource File Save the preceding code in Notepad as Myres.rc in the directory where Rc.exe exists on your hard disk.

Copy Chimes.wav and Ding.wav from your Windows directory (\Windows\Media directory in Windows 95 and Windows 98 or \WinNT\Media directory in Windows NT and Windows 2000) to the same directory where you saved the Myres.rc file.

At the command line, type "RC -r Myres.rc." If you want a 16-bit and 32- bit version of your resource file, then you will have to save two copies of your resource file as Myres32.rc and Myres16.rc, and compile each separately with the appropriate resource compiler.

Steps to Run the Sample Application
Create a new project and add a command button to Form1.

Add the following code to Form1:

'*******
' Form1.frm — Calls PlayWaveRes to play a wave resource file.
'*******

     Sub Command1_Click()
        PlayWaveRes "Chimes"
        PlayWaveRes "Ding"
     End Sub
Add your resource file to the project.

Type the following code in a new code module:

******
' Baswave.bas — Plays a wave file from a resource using LoadResData.
'*****

     Option Explicit
     #If Win32 Then
  Private Declare Function sndPlaySound Lib "winmm" Alias _
"sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) _
          As Long
     #Else
  Private Declare Function sndPlaySound Lib "MMSYSTEM" ( _
   lpszSoundName As Any, ByVal uFlags%) As Integer
     #End If

'******
' Flag values for wFlags parameter.
'******

Public Const SND_SYNC = &H0 ' Play synchronously (default).
'Public Const SND_ASYNC = &H1 ' Play asynchronously (see note below).
Public Const SND_NODEFAULT = &H2 ' Do not use default sound.
Public Const SND_MEMORY = &H4 ' lpszSoundName points to a memory file.
Public Const SND_LOOP = &H8 ' Loop the sound until next sndPlaySound.
Public Const SND_NOSTOP = &H10 ' Do not stop any currently playing sound.

'******
' Plays a wave file from a resource.
'******

Public Sub PlayWaveRes(vntResourceID As Variant, Optional vntFlags)
'-----------------------------------------------------------------
' WARNING: If you want to play sound files asynchronously in
'   Win32, then you MUST change bytSound() from a local
'   variable to a module-level or static variable. Doing
'   this prevents your array from being destroyed before
'   sndPlaySound is complete. If you fail to do this, you
'   will pass an invalid memory pointer, which will cause
'   a GPF in the Multimedia Control Interface (MCI).
'-----------------------------------------------------------------
Dim bytSound() As Byte ' Always store binary data in byte arrays!

bytSound = LoadResData(vntResourceID, "WAVE")
  If IsMissing(vntFlags) Then
   vntFlags = SND_NODEFAULT Or SND_SYNC Or SND_MEMORY
     End If

If (vntFlags And SND_MEMORY) = 0 Then
  vntFlags = vntFlags Or SND_MEMORY
     End If

sndPlaySound bytSound(0), vntFlags
     End Sub

REFERENCES
For information on how to store any file type in a resource file and retrieve the file for use at run-time in Visual Basic versions 5.0 and 6.0, please see the following article in the Microsoft Knowledge Base:

Q194409 SAMPLE: RESFILE.EXE Stores Any File Type in a Resource File
Additional query words: WAVE LOADRESDATA RESOURCES RC BYTE SND_ASYNC kbdsd

Oleg Koren

Вопрос

Как на VB сделать снимок экрана и сохранить его в файл?

Ответ

Можно вот так:

Declare Function GetDesktopWindow Lib "user32.dll" () As Long
Declare Function GetDC Lib "user32.dll" (ByVal hWnd As Long) As Long
Declare Function ReleaseDC Lib "user32.dll" (ByVal hWnd As Long, ByVal hDC As
Long) As Long
Declare Function BitBlt Lib "GDI32.dll" (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
SUB SaveScreen
    ScaleMode = vbPixels
    Move 0, 0, Screen.Width + 1, Screen.Height + 1
    dwRop = &HCC0020
    hwndSrc = GetDesktopWindow()
    hSrcDC = GetDC(hwndSrc)
    Call BitBlt(hDC, 0, 0, ScaleWidth, ScaleHeight, hSrcDC, 0, 0, dwRop)
    Call ReleaseDC(hwndSrc, hSrcDC)
    SavePicture frmSCREEN.Image, scrfile$
END SUB


frmSCREEN — форма которую следет сделать невидимой.
Пример взят из рассылки сайта VBnet.ru

Пеганов Анатолий Юрьевич

Вопрос

Как запихнуть анимационное gif -изображение на форму? Через image оно получается статичным.

Ответ

Можно найти какой-нибудь OCX, но посмотри на этот пример vbnetautorun.zip.

Павел Сурменок

Вопрос

У меня в проекте есть рисунок, как сделать, чтобы его можно было перенести вместе с проектом на другой компьютер. Какой код нужен для этого и куда его прописывать?

Ответ

Для начала давайте определимся, где именно в проекте? И в каком виде? Если вы используете элемент Image или PictureBox, в который и загружен рисунок во время проектирования формы (т.е. на форме имеется один из вышеуказанных контролов, и в свойстве Picture этого контрола указано Bitmap), то в этом случае какие либо дополнительные действия производить не нужно, рисунок будет интегрирован (если так можно
сказать) в ресурсы исполняемого файла и все будет работать.

Если же картинка лежит где-то на жестком диске и не загружена в проект на этапе проектирования формы, то последовательность действий должна быть примерно такой:
— поместите файл с изображением в папку с проектом;
— на форме разместите PictureBox для загрузки в него нашего рисунка. допустим PictureBox называется Picure1, а файл с рисунком image.bmp
— в коде формы (пусть это будет Form_Load) пишем
Код:
Picture1.Picture = LoadPicture(App.Path & "\image.bmp")
— теперь что бы все работало и на другой машине, файл image.bmp должен присутствовать в томже каталоге, что и исполняемый файл программы.

Из конференции Expert_FAQ

Вопрос

Объясните, как пользоваться функцией mciSendString. Хотя все команды лежат здесь, я там все равно ничего не понял, и пример из MSDN для C++ ничего не дает. Может есть у кого пример проигрывания MIDI без внешних контролов?

Ответ

Функция mciSendString
Declare Function mciSendString Lib "winmm" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrRlpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

Платформа
Windows 95/98: Поддерживается
Windows NT: Требуется Windows NT 3.1 или выше
Windows 2000:Поддерживается
mciSendString посылает строку команды устройству интерфейса управления средой передачи данных(MCI). Устройство, которому команда послана, определено в строке команды. Строки команды, используемые с этой функцией могут исполнять почти любую задачу, необходимую для использования устройства мультимедиа, установленного на компьютере. MciSendString обеспечивает относительно простой способ исполнять операции с мультимедиа.

Смотри Команды MCI для списка некоторых строк команды, используемых функцией mciSendString

Возвращаемое значение
В успешном случае функция возвращает 0. В случае ошибки, функция возвращает код ошибки MCI отличный от нуля. Чтобы получить текстовое описание ошибки, используйте функцию mciGetErrorString.

lpstrCommand
Указатель на строку, которая определяет строку команды MCI.
lpstrReturnString
Для строк команды,возвращаюх информацию, эта строка получает вывод данных командой. Эта строка должна первоначально быть по крайней мере в длиной 128 символов, долго чтобы получить строку. Любая информация, помещенная в эту строку будет с нулевым символом в конце. Если строка команды не возвращает информацию, этот параметр игнорируется. Если никакой информации возвращения не требуется, этот параметр может быть NULL

uReturnLength

Размер в символах, буфера возвращений, указанного lpstrReturnString

hwndCallback

Если «уведомляющийся» флажок строки команды определен, это — дескриптор окна, чтобы получить сообщение MM_MCINOTIFY , когда команда завершается, ннезависимо от того, выполнена ли она или потерпело неудачу

Пример:

' Открываем или закрываем CD-ROM .
Dim retval As Long ' возвращаемое значение
Dim returnstring As Long

retval = mciSendString("set CDAudio door open", _
returnstring, 127, 0)
'если закрыть,то используем
retval = mciSendString("set CDAudio door closed", _
returnstring, 127, 0)

Krab

'Тоже самое, только чуть удобнее :)

Private Declare Function mciSendString Lib "winmm.dll" _ Alias
"mciSendStringA" (ByVal lpstrCommand As String, ByVal _ lpstrReturnString As
String, ByVal uReturnLength As Long, ByVal _ hwndCallback As Long) As Long
Dim retval As Long Dim returnstring As Long


Private Sub Command1_Click()
retval = mciSendString("set CDAudio door open", returnstring, _ 127, 0)
End Sub

Private Sub Command2_Click()
retval = mciSendString("set CDAudio door closed", returnstring, _ 127,
0)
End Sub


unguided

Вопрос

Можно ли получить рисунок из ListImage как Dim Img() As Byte ?

Ответ

dim Bitmapinfo as BITMAPINFO,
dim outBuff as byte*65535
hDCdskbuff=GetDC(hWindowWnd);
hSecondBitmap =(HBITMAP)LoadBitmap(GetModuleHandle(0),MAKEINTRESOURCE(IDB_BITMAP1));
'GetModuleHandle(0) тоже самое что и hInstance

GetDIBits(hDCdskbuff,hSecondBitmap,0,128,outBuff,&Bitmapinfo,DIB_RGB_COLORS);


Функция копирует с указанного контекста в байтовый массив, есть и обратная функция.

Ivan R

Вопрос

В файл ресурсов поместил звуковой файл. А как его проиграть?

Ответ

Если не считать неудобных способов с сохранением этого файла на диск, то можно вот так:

Private ZvBufer() As Byte
Private Const SND_ASYNC = &H1
Private Const SND_NODEFAULT = &H2
Private Const SND_MEMORY = &H4
Private Declare Function sndPlaySound Lib "WINMM.DLL" Alias "sndPlaySoundA" _
(lpszSoundName As Any, ByVal uFlags As Long) As Long


Использовать:

ZvBufer = LoadResData(101, "WAVE")
sndPlaySound ZvBufer(0), SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY


shadow

Вопрос

Как можно организовать проигрывание MP3 файлов с использованием какого-нибудь стандартного декодера Fraunhofer IIS MPEG Layer-3 Decoder?

Ответ

Вот пример модуля, который содержит необходимую Вам функцию:

Attribute VB_Name = "mdlSound"
Option Explicit

Public Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal
lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Public Const SND_ASYNC = &H1

Public Function Sound(c As String) As Long
Dim b As Long
b = PlaySound(c, 0, SND_ASYNC)
Sound = b
End Function

Использовать так:
Sound "h:\Music\ozr.wav"
или
Sound "h:\Music\ozr.mp3"
или
Sound "h:\Music\ozr.mpg"

Данная процедура заканчивает свою работу после начала проигрывания музыки. Т.е. музыка играет, а программа выполняется. Чтобы можно было точно узнать, когда эта музыка кончилась, необходимо использовать таймер, или вместо API-функции использовать элемент управления MMControl

Если же поступить так, как описано во многих книгах по программированию (кстати и в справке по VC++) и заменить константу SND_ASYNC, то тогда Ваша программа остановится до того момента, когда музыка кончится, что не очень хорошо, если музыка длинная.

Но учтите, что при установке такой программы на другой компьютер Вам необходимо будет также установить на этом компьютере кодек. Он находится в саморазворачивающимся архиве с именем l3codecx.exe

BSP

А можно с помощью mciSendString.

akplayer

Вопрос

Как узнать, сколько в данном цвете (например, в Me.BackColor) красного, сколько зеленого и синего?

Ответ

Public Function Test()
     Dim R As Long, G As Long, B As Long
     LongToRGB vbWhite, R, G, B
Debug.Print "R: " & R & " G: " & G & " B: " & B
End Function

Public Function LongToRGB(ByVal Color As Long, ByRef R As Long, ByRef G As Long,
ByRef B As Long)
B = Color \ 256 ^ 2
G = (Color — B * 256 ^ 2) \ 256
R = Color — G * 256 — B * 256 ^ 2
End Function

Артем Кривокрисенко

Private Type D3STYPE
Rd3s As String
Gd3s As String
Bd3s As String
End Type

Dim D3S As D3STYPE

Function POINT_TO_RGB(PIC_POINT As Long) As String
ZNAC = Hex(PIC_POINT)
D3S.Rd3s = Mid(ZNAC, 1, 2)
D3S.Gd3s = Mid(ZNAC, 3, 2)
D3S.Bd3s = Mid(ZNAC, 5, 2)
If D3S.Rd3s = "" Then D3S.Rd3s = 0
If D3S.Gd3s = "" Then D3S.Gd3s = 0
If D3S.Bd3s = "" Then D3S.Bd3s = 0
HEX_TO_10R = CLng("&H" & D3S.Rd3s)
HEX_TO_10G = CLng("&H" & D3S.Gd3s)
HEX_TO_10B = CLng("&H" & D3S.Bd3s)
STR_RGB = HEX_TO_10R & "," & HEX_TO_10G & "," & HEX_TO_10B
POINT_TO_RGB = STR_RGB
End Function

FELIX-RUS

Вопрос

Как проиграть файлы разных форматов? Например mp3, wma. mp3pro и т.д.

Ответ

Ниже о том, как воспроизводить файл mp3. Для других форматов аналогично.

Музыку, сжатую этой программой, я воспроизвожу так же, как если бы это был обычный WAV-файл, т.к. при установке программы кодек автоматически регистрируется в системе.
Вот пример модуля, который содержит необходимую Вам функцию:
Attribute VB_Name = «mdlSound»
Option Explicit
Public Declare Function PlaySound Lib «winmm.dll» Alias «PlaySoundA»
(ByVal
lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Public Const SND_ASYNC = &H1
Public Function Sound(c As String) As Long
Dim b As Long
b = PlaySound(c, 0, SND_ASYNC)
Sound = b
End Function


Использовать так:
Sound «h:\Music\ozr.wav»
или
Sound «h:\Music\ozr.mp3»
или
Sound «h:\Music\ozr.mpg»

Данная процедура заканчивает свою работу после начала проигрывания музыки. Т.е. музыка играет, а программа выполняется. Чтобы можно было точно узнать, когда эта музыка кончилась, необходимо использовать таймер, или вместо API-функции использовать элемент управления MMControl

Если же поступить так, как описано во многих книгах по программированию (кстати и в справке по VC++) и заменить константу SND_ASYNC, то тогда Ваша программа замерзнет до того момента, когда музыка кончится, что не очень хорошо, если музыка длинная.

Но учтите, что при установке такой программы на другой компьютер Вам необходимо будет также установить на этом компьютере кодек. Он находится в саморазворачивающимся архиве с именем l3codecx.exe

BSP

Вопрос

Как сделать Обычное меню Windows + картинки на пунктах меню, которые «всплывают», когда пункт выбирается.

Ответ

Открыть новый проект.
Добавить модуль.
В форму добавить кнопку.
Добавить код в модуль
Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal nPosition As _
Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long
Public Const MF_BITMAP = &H4&
Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As String
cch As Long
End Type
Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Long, _
ByVal un As Long, ByVal b As Boolean, lpMenuItemInfo As MENUITEMINFO) As Boolean
Public Const MIIM_ID = &H2
Public Const MIIM_TYPE = &H10
Public Const MFT_STRING = &H0&
Добавить этот код в код кнопки:
Private Sub Command1_Click()'Get the menuhandle of your
apphMenu& = GetMenu(Form1.hwnd)'Get the handle of the first submenu (Hello)
hSubMenu& = GetSubMenu(hMenu&, 0)'Get the menuId of the first entry (Bitmap)
hID& = GetMenuItemID(hSubMenu&, 0)'Add the bitmap
SetMenuItemBitmaps hMenu&, hID&, MF_BITMAP, _Picture1.Picture, _Picture1.Picture'You can add two bitmaps to a menuentry
'One for the checked and one for the unchecked state.
End

BSP

Вопрос

Подскажите как сделать стикеры («липкие листочки» на рабочем столе)? И чтобы была возможность делать настройки к ним (изменять цвет, размер фона, шрифта и т.д.).

Ответ

На форму ставишь объект TextBox, устанавливаешь свойство appearance равное 0, т.е. плоской. С формы убираешь заголовок — свойство BorderStyle устанавливаешь 0. Изменять цвет TextBox'а свойство BackColor.
Программно это выгледит так: text1.backcolor=rgb(числовое значение красного цвета, зеленого, синего). Значение должно быть в пределах от 0 до 255.

Чтобы поменять размер фона:
Form1.Height = Значение по высоте
Form1.Width = Значение по длине
Text1.Height = Form1.Height
Text1.Width = Form1.Width
Text1.FontName = "Название шрифта"
Text1.FontSize = "Размер шрифта"

Полужирный
Text1.FontBold = True

Курсивом
Text1.FontItalic = True

Цвет шрифта
Text1.ForeColor = RGB(красный, зеленый, синий)

Иван

Вопрос

Проблема такая. Ставлю я свою программу генерировать то, что мне надо, а тем временем переключаюсь в другую программу. Как мне сделать, чтобы после окончания работы программа обратила на себя мое внимание помигиванием на нижней панельке (так же как это делает IE, когда страничку загрузит) ?

Или пусть она вылезает поверх всех окон.

Ответ

В форму:

Private Sub Form_Load()
    Call SetFormPosition(Me.hwnd, True)
End Sub

В модуль:

Public Declare Function SetWindowPos Lib "user32" _
    (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
    ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
    ByVal cy As Long, ByVal wFlags As Long) As Long
Public Const HWND_NOTOPMOST = -2
Public Const HWND_TOPMOST = -1
Public Const SWP_NOACTIVATE = &H10
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1

Public Sub SetFormPosition(frmHandl As Long, TopPosition As Boolean)
    If TopPosition Then
        SetWindowPos frmHandl, HWND_TOPMOST, 0, 0, 0, 0, _
            SWP_NOACTIVATE Or SWP_NOSIZE Or SWP_NOMOVE
    Else
        SetWindowPos frmHandl, HWND_NOTOPMOST, 0, 0, 0, 0, _
            SWP_NOSIZE Or SWP_NOMOVE
    End If
End Sub

И будет надежно поверх всех окон.

Stranger757

Declare Function FlashWindow Lib "user32" (ByVal hwnd As Long, ByVal bInvert As Long) As Long

Private Sub Command1_Click() ' Окно мигает 5 раз для привлечения внимания
    Dim c As Integer, retval As Long
    For c = 1 To 10 ' 5 раз цвет активного окна и 5 раз — неактивного
        retval = FlashWindow(Form1.hwnd, 1) ' переключаем вид окна
        Sleep 500 ' пауза через каждые 500 миллисекуд (1/2 секунды)
    Next c
    retval = FlashWindow(Form1.hwnd, 0) ' окно должно выглядить активным
End Sub


Viaceslavas Kaleda

Вопрос

Как сохранить рисунок из Picture Box в файл?

Ответ

Подготовте проект, добавив в него форму и модуль.
На форму поместите:
- Picture Box с именами Рисунок1 и Рисунок2
- Common Dialog с именем CommonDialog1
Добавте в модуль:


Public Declare Function StretchBlt Lib "gdi32" _
(ByVal hdc 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 nSrcWidth As Long, ByVal nSrcHeight As Long, _
ByVal dwRop As Long) As Long
Public Const SRCCOPY = &HCC0020
Public retval As Long


Добавте в форму:


Рисунок2.Cls
Рисунок2.Height = Рисунок1.Height
Рисунок2.Width = Рисунок1.Width
retval = StretchBlt(Рисунок2.hdc, 0, 0, Рисунок2.Width, _
Рисунок2.Height, Рисунок1.hdc, 0, 0, _
Рисунок1.Width, Рисунок1.Height, SRCCOPY)
CommonDialog1.Filter = "Рисунки| *.bmp"
CommonDialog1.ShowSave
SavePicture Рисунок2.Image, CommonDialog1.FileName

Мир программирования на Visual BASIC 5.0 и HTML

Вопрос

Как сохранить графические данные из буфера обмена в BMP?

Ответ

Dim ClipPicture As IPictureDisp
'Проверка: действительно в буфере нахоится рисунок BMP?:
If Clipboard.GetFormat(vbCFBitmap) Then
Set ClipPicture = Clipboard.GetData(vbCFBitmap)
SavePicture ClipPicture, "C:\11.bmp"
End If

Игорь

Вопрос

Как убрать рисунок из Image? Т.е. сделать так, чтобы Image стал пустым, а предворительно в него был загружен рисунок!

Ответ

Set Image1.Picture = Nothing

Дмитрий Данелия

Image.Picture = LoadPicture()


vitarada

Вопрос

У кого-нибудь есть OCX который бы проигрывал avi-файлы, WindowsMediaPlayer не предлагать?

Ответ

Microsoft Multimedia Control

У него есть свойство hWndDisplay. Там указывается hwnd окна, в котором
будет играться файл. Это может также быть и hwnd PictureBox'а

А пользоваться им примерно также, как и WindowsMediaPlayer

    Артем Кривокрисенко

Группа MS Windows Common Controls — 2
Microsoft Animation Control

Алексей Вишневский

Вопрос

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image1.Picture = App.Path & "\Grafica\CloseDn.bmp"
End Sub

Почему на второй строчке возникает "Type Mismatch"? С выделением "&"…

Ответ

Нужно:
Image1.Picture = LoadPicture(App.Path & "\Grafica\CloseDn.bmp")

tagir

Вопрос

Может быть кто подскажет, что мне применять в моей проге, если при каких-то либо действиях мне необходимо отображать много фоток?

Ответ

Либо ListView, либо PictureBox. Желательно юзать АПИ.

Артем Кривокрисенко



Copyright © 2000-2004 Сообщество Чайников
Контактная информация