Сохранить рисунок из DC в BMP файл

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

Сохранить рисунок из DC в BMP файл

Сообщение Faust » 20.04.2005 (Ср) 10:32

DC рукотворный (не принадлежит какой-либо форме или PictureBox'у). Соответствующей API не нашёл. Сейчас подумываю о том, чтобы писать файл руцями, но делать это критически влом.
Листинги не горят!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.04.2005 (Ср) 11:11

Не помню даже, сколько раз я давал этот код :)

Код: Выделить всё
Private Declare Function OleCreatePictureIndirect Lib "oleaut32" (ByRef lpPictDesc As PicBmp, riid As GUID, ByVal fOwn As Long, ByRef lplpvObj As Any) As Long

Private Type GUID
  Data1 As Long
  Data2 As Integer
  Data3 As Integer
  Data4(0 To 7) As Byte
End Type

Private Type PicBmp
  Size As Long
  Type As PictureTypeConstants
  hBmp As Long
  hPal As Long
  Reserved As Long
End Type

Public Function GetPicture(PyVal hPic as long) As IPictureDisp 
  Dim p As PicBmp, g As GUID
 
  With p
    .hBmp = hPic
    .Size = Len(p)
    .Type = vbPicTypeBitmap
  End With
 
  'IDispatch
  With g
    .Data1 = &H20400
    .Data4(0) = &HC0
    .Data4(7) = &H46
  End With
 
  'Внимание. 0 означает, что картинка не становится собственностью объекта StdPicture и не будет уничтожена при его уничтожении.
  OleCreatePictureIndirect p, g, 0, GetPicture
End Function

....
SavePicture GetPicture(hBitmap), "file"
....
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


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

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

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

    TopList