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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сохранение на диске Graphics объекта 
:(
    Опции темы
nmc
Дата 11.12.2009, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Привет!

У panel  есть Graphics 
Код

        Graphics g;
        Image image;
...

в Graphics загружаем картинку, и строку
Код

        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawImage(image, ...);
            e.Graphics.DrawString(str, ...);           
        }
...

Картику перерисовуем (меняем строку )
Код

        private void Draw()
        {
            panel1.CreateGraphics().DrawImageUnscaled(bmp, 0, 0);
            g.DrawImage(image, ...);
            g.DrawString(str, ...);
        }
...

Как сохранить Graphics ( с помощью SaveFileDialog)?

Код

....
            Stream myStream;
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();         
            saveFileDialog1.Filter = "images files (*.jpg)|*.jpg|...|All files (*.*)|*.*";
            saveFileDialog1.FilterIndex = 1;
            saveFileDialog1.RestoreDirectory = true;
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if ((myStream = saveFileDialog1.OpenFile()) != null)
                {
                //так сохраняем картинку,но без строки
                //image.Save(saveFileDialog1.FileName); 

               // Нужно сохранить Graphics, так в нем картинка и строка?

                 //Нужно/можно  ли использовать потоки
                 //StreamWriter writer = new StreamWriter(myStream);
                    //writer.Write(g.);                
                    myStream.Close();
                }
            }




Это сообщение отредактировал(а) nmc - 11.12.2009, 14:15
PM   Вверх
tol05
Дата 11.12.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Создайте объект, позволяющий сохраняться в файл. И инициализируйте его своим Graphics
например
Код

Graphics gr;
...
using (Bitmap bmp = new Bitmap(100, 100, gr))
{
    bmp.Save(@"C:\gr.bmp");  //file name from Dialog сюда вставить
}



Это сообщение отредактировал(а) tol05 - 11.12.2009, 15:07


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
diadiavova
Дата 11.12.2009, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(nmc @  11.12.2009,  14:13 Найти цитируемый пост)
Как сохранить Graphics

Никак. У тебя неправильное понимание сути объекта Graphics. Ты думаешь, что это бумага, на которой что-то нарисовано, а на самом деле это - карандаш. А карандаш не может и не должен помнить что он рисовал. Если ты хочешь что-то нарисовать в файле изображения, то сначала надо создать объект изображения, потом получить объект Graphics не для панели, а для этого изображения и рисоват в нём. А потом можно сохранять. Выглядит это примерно так.
Код

        private void Draw()
        {
            var bmp = new Bitmap();
            var g = Graphics.FromImage(bmp);
            g.DrawImage(image, ...);
            g.DrawString(str, ...);
            bmp.Save("fileName");
        }



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
nmc
Дата 20.12.2009, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо!
 smile 

PM   Вверх
A5uKa
Дата 22.12.2009, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



по теме ...

А так я могу из базы на asp.net сайт рисунок грузить который в mssql поле image ?
PM   Вверх
tol05
Дата 22.12.2009, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



image - это байтовый поток. Соответственно, можно получить этот поток и с помощью Image.FromStream получить Image
пример


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
A5uKa
Дата 22.12.2009, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



Цитата(tol05 @ 22.12.2009,  14:18)
image - это байтовый поток. Соответственно, можно получить этот поток и с помощью Image.FromStream получить Image
пример

Спасибо. Правда мне нужен обратный механизм.

Выгрузка картинке на сервер - часть клиентского приложения. А мне надо ему её показать.
И с файлами работать если прийдётся, то нужно придумать как upload-ить их туда ...
PM   Вверх
tol05
Дата 22.12.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



да какая разница? я когда эту ссылку искал, так много примеров в гугле нашел, что даже растерялся. Ищите то, что нужно... по тегам "ASP.NET database image load upload" и т.п.


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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