Модераторы: diadiavova, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как сохранить рисунок из picturebox в файл 
:(
    Опции темы
sergexp
Дата 30.11.2006, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 30.11.2006

Репутация: нет
Всего: нет



пытаюсь сохранить рисунок из picturebox в файл, а не получается. Вот как я это делаю:

Код

Public Sub SaveToFile(ByVal sfd As SaveFileDialog, ByVal pb As PictureBox)
        sfd.Title = "Save to file"
        sfd.Filter = "JPEG Images (*.jpg,*.jpeg)|*.jpg;*.jpeg|Gif Images    (*.gif)|*.gif|Bitmaps (*.bmp)|*.bmp"
        sfd.FilterIndex = 1
        sfd.OverwritePrompt = True
        If sfd.ShowDialog() = DialogResult.OK Then
            Dim picName As String
            picName = sfd.FileName
            If picName.EndsWith("jpg") Or picName.EndsWith("jpeg") Then
                pb.Image.Save(picName, System.Drawing.Imaging.ImageFormat.Jpeg)
            End If
            If picName.EndsWith("gif") Then
                pb.Image.Save(picName, System.Drawing.Imaging.ImageFormat.Gif)
            End If
            If picName.EndsWith("bmp") Then
                pb.Image.Save(picName, System.Drawing.Imaging.ImageFormat.Bmp)
            End If
        End If
    End Sub


при сохранении ругается на стоки .Image.Save(picName, System.Drawing.Imaging.ImageFormat.Bmp)
В чем проблема.

Это сообщение отредактировал(а) Exception - 1.12.2006, 20:17
PM MAIL   Вверх
maxim1000
Дата 30.11.2006, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



перенёс из Алгоритмов


--------------------
qqq
PM WWW   Вверх
Тутанхамец
Дата 30.11.2006, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: нет
Всего: 6



Интуиция подсказывает, что это VB.NET... 

P.S. 

Какая она у меня все-таки изумительная.

Это сообщение отредактировал(а) Тутанхамец - 30.11.2006, 18:51
PM MAIL   Вверх
sergexp
Дата 1.12.2006, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 30.11.2006

Репутация: нет
Всего: нет



Так что нужно сделать?
PM MAIL   Вверх
Wanderer2019
Дата 1.12.2006, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 1
Всего: 17



так ты под .NET пишешь или тебя интересует способ сохранения средствами VB6???
PM ICQ MSN   Вверх
maxim1000
Дата 1.12.2006, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



моя ошибка... надо было в VB.Net
(не обратил внимания на System.Drawing...


--------------------
qqq
PM WWW   Вверх
sergexp
Дата 1.12.2006, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 30.11.2006

Репутация: нет
Всего: нет



я подключил:

Imports System.Drawing
Imports System.Drawing.Printing
Imports System.IO
Imports System.Drawing.Imaging

все равно не хочет
PM MAIL   Вверх
Wanderer2019
Дата 1.12.2006, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 1
Всего: 17



у меня сохранил по этой строке:
PictureBox1.Image.Save("C:\1.bmp", System.Drawing.Imaging.ImageFormat.Bmp)

ты бы конкретней написал.. что что именно пишет в ошибке.
PM ICQ MSN   Вверх
cardinal
Дата 1.12.2006, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Перенес из VB6.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
sergexp
Дата 1.12.2006, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 30.11.2006

Репутация: нет
Всего: нет



вот что он пишет:

An unhandled exception of type 'System.NullReferenceException' occurred in Barcode.exe

Additional information: Object reference not set to an instance of an object.

PM MAIL   Вверх
ivashkanet
Дата 1.12.2006, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 5
Всего: 149



Что я могу сказать. Код, вроде, нормальный.
Кажется мне, что у тебя нет картинки в PictureBox  smile 
Т.е. pb.Image = Nothing
Почитай-ка Как распечатать содержимое PicturBox
PM MAIL WWW ICQ   Вверх
Wanderer2019
Дата 1.12.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 1
Всего: 17



Цитата(sergexp @  1.12.2006,  17:25 Найти цитируемый пост)
вот что он пишет:

An unhandled exception of type 'System.NullReferenceException' occurred in Barcode.exe

Additional information: Object reference not set to an instance of an object.


нутк видимо ты пытаешься сохранить null.
попробуй отладить пошагово и посмотри, есть ли реально картинка в твоем PictureBox -
свойство Image.
PM ICQ MSN   Вверх
DarkDragon
Дата 5.12.2006, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 5
Всего: 8



Цитата(Wanderer2019 @  1.12.2006,  17:41 Найти цитируемый пост)
нутк видимо ты пытаешься сохранить null.
попробуй отладить пошагово и посмотри, есть ли реально картинка в твоем PictureBox -
свойство Image. 


А чо смотреть то, вот попробуй код:
Код

Public Sub SaveToFile(ByVal sfd As SaveFileDialog, ByVal pb As PictureBox)
        If pb.Image Is Nothing Then Return ' Если нету картинки ф-ция завершается.
        sfd.Title = "Save to file"
        sfd.Filter = "JPEG Images (*.jpg,*.jpeg)|*.jpg;*.jpeg|Gif Images    (*.gif)|*.gif|Bitmaps (*.bmp)|*.bmp"
        sfd.FilterIndex = 1
        sfd.OverwritePrompt = True
        If sfd.ShowDialog() = DialogResult.OK Then
            Dim picName As String
            picName = sfd.FileName
            If picName.EndsWith("jpg") Or picName.EndsWith("jpeg") Then
                pb.Image.Save(picName, System.Drawing.Imaging.ImageFormat.Jpeg)
            End If
            If picName.EndsWith("gif") Then
                pb.Image.Save(picName, System.Drawing.Imaging.ImageFormat.Gif)
            End If
            If picName.EndsWith("bmp") Then
                pb.Image.Save(picName, System.Drawing.Imaging.ImageFormat.Bmp)
            End If
        End If
    End Sub


PM MAIL   Вверх
sergexp
Дата 6.12.2006, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 30.11.2006

Репутация: нет
Всего: нет



Скажите как рисовать в picturebox, а не в hdc.
я рисую так:
PictureBox1.CreateGraphics.FillRectangle(...)
похоже что все попадает в  hdc. Поэтому и ругается.
PM MAIL   Вверх
ivashkanet
Дата 6.12.2006, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 5
Всего: 149



sergexp, блин. Ты хоть что-то читаешь что тебе дают?

Ты хочешь сохранить объект image, который привязан к пикчербоксу.
Но у тебя его нет smile 
Потом, что рисуешь ты сам smile И не на этом имадже, а на экране, в графической памяти компа smile 
Чтобы сохранить картинку из памяти нужно:
Код

 Public Sub SaveToFile(ByVal sfd As SaveFileDialog, ByVal pb As PictureBox)
        sfd.Title = "Save to file"
        sfd.Filter = "JPEG Images (*.jpg,*.jpeg)|*.jpg;*.jpeg|Gif Images    (*.gif)|*.gif|Bitmaps (*.bmp)|*.bmp"
        sfd.FilterIndex = 1
        sfd.OverwritePrompt = True
        If sfd.ShowDialog() = Windows.Forms.DialogResult.OK Then

            Dim image As New Bitmap(pb.Width, pb.Height)
            Dim gr As Graphics = Graphics.FromImage(image)

            ' тут нужно либо продублировать код рисования,
            ' используя в качестве графикса gr
            ' либо вызвать PicBox_OnDraw(pb, gr)
            ' либо pb.OnDraw(pb, gr)

            Dim picName As String
            picName = sfd.FileName
            If picName.EndsWith("jpg") Or picName.EndsWith("jpeg") Then
                pb.Image.Save(picName, System.Drawing.Imaging.ImageFormat.Jpeg)
            End If
            If picName.EndsWith("gif") Then
                pb.Image.Save(picName, System.Drawing.Imaging.ImageFormat.Gif)
            End If
            If picName.EndsWith("bmp") Then
                pb.Image.Save(picName, System.Drawing.Imaging.ImageFormat.Bmp)
            End If
        End If
    End Sub

PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0598 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.