Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Как сохранить содержимое окна Picture в bmp файл


Автор: Alexandr8 29.12.2004, 18:53
Как сохранить содержимое окна Picture box в bmp файл? smile

Автор: cardinal 29.12.2004, 23:47
Код

Option Explicit

Private Sub Command1_Click()
SavePicture Picture1.Picture, "e:\test.bmp"    ' Save picture to file.
End Sub

Автор: DenageS 17.7.2008, 20:18
Я рисую линию в PictureBox методом Line.
Как мне сохранить в bmp картинку с этой линией?
Останется ли эта линия, если использовать SavePicture?
P.S. Я бы проверил, но возможности нет.

Автор: JusTalionis 18.7.2008, 10:31
Нет.  Не останется.
В файл выводится только та картинка, которая была загружена в пикчбокс.
а Line - это метод, а не картинка...

Автор: JusTalionis 18.7.2008, 10:46
Вот выкладываю на эту тему проект графического редактора типа Пайнта. Найдено в Сети, несколько лет назад.
Кому надо - разбирайте, как там сделан вывод линий в файл.

Автор: ВикторZX 20.7.2008, 22:19
Цитата(JusTalionis @ 18.7.2008,  10:31)
Нет.  Не останется.
В файл выводится только та картинка, которая была загружена в пикчбокс.
а Line - это метод, а не картинка...

двойка тебе

Автор: neic 14.1.2009, 00:59
Вопрос такой.

Допустим у нас есть Picture1 в нём картинка, на Picture1 есть метка Label1.

Как сохранить всё содержимое Picture1?

P.s. сохраните на файлообменике, а то тут у меня не качает.

Автор: I_Am_Rock 14.1.2009, 17:46
Цитата(neic @  14.1.2009,  00:59 Найти цитируемый пост)
Допустим у нас есть Picture1 в нём картинка, на Picture1 есть метка Label1.

Нужно сохранить картинку вместе с текстом в объекте Label1? Если Да, то так невозможно... по крайней мере стандартными средствами.
Цитата(neic @  14.1.2009,  00:59 Найти цитируемый пост)
Как сохранить всё содержимое Picture1?

Содержимое объекта Label1 не явл. содержимым объекта Picture1. 

Автор: Rrader 14.1.2009, 19:10
Код

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 Const SRCCOPY = &HCC0020

Private Sub Command1_Click()
  Form1.ScaleMode = 3
  With Picture1
    .ScaleMode = 3
    .AutoRedraw = True    
    Call BitBlt(.hDC, 0, 0, .ScaleWidth, .ScaleHeight, hDC, .Left, .Top, SRCCOPY)
    .Picture = .Image
    SavePicture .Picture, "C:\Test.bmp"
  End With
End Sub

P.S.
BorderStyle у Picture1 в Properties поставить в 0, а если рамка нужна ,то в коде надо учесть (вместо нулей -2 написать)

Автор: neic 15.1.2009, 00:14
Rrader
спасибо!

Автор: neic 15.1.2009, 15:53
Возникло 2 проблемы:
1) Picture1 не очищаяется после команды CLS
2) Возникает ситуация, что после выполнения приведённого кода фоткается часть экрана ЗА формой.

Как исправить не знаю, всё перепробывал.

Код

...'приходит команда от клиента
...'действия над пришедшими данными

Select Case komand
    Case "!baner_reg"        
        Me.ScaleMode = 3
        With Picture4
          .ScaleMode = 3
          .AutoRedraw = True
          Call BitBlt(.hDC, 0, 0, .ScaleWidth, .ScaleHeight, hDC, .Left, .Top, SRCCOPY)
          .Picture = .Image
          SavePicture .Picture, "C:\Test.bmp"
        End With
        
        Picture5.Picture = LoadPicture("C:\Test.bmp")

        GoTo exit_sub
End Select
...


Вот ссылка на архив со скринами: http://slil.ru/26544515

33 - как должно быть
34 - что получается после выполнения кода
35 - как сохранилась картинка

Очень нужно это сделать. Помогите.

Автор: Rrader 16.1.2009, 06:37
neic, в это время форма видна на экране?

Автор: neic 16.1.2009, 11:19
Rrader, да. Я пробывал и при инициализации, и при активизации, и при загрузке, и после загрузки. Всегда когда есть что-то под формой или над формой, картинка наклflывается друг на друга причём фотка PIcture1 ложиться в самый низ. Т.е. сначала накладывается слой тот что над формой, потом накладывается слой тот что под формой и только самый нижний слой накладывается PIcture1. 

Автор: Rrader 17.1.2009, 10:37
neic, тестовый преокт сможешь сделать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)