Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > как открыть\сохранить графический файл на панели?


Автор: genialno 23.11.2008, 22:51
Делаю что-то похожее на примитивный графический редактор.

Не получается открытие и сохранение файлов.
Имется форма, на форме panel1. Естественно, есть меню(....Открыть, Сохранить....).
Как правильно написать обработчик кнопки "Открыть", чтобы графический файл открывался на panel1?

Если на панель ещё положить  pictureBox1, тогда в  pictureBox1 отображает открываемый рисунок, естественно. Но мне надо на панели..
Код, открывает на pictureBox1 выбранную картинку
Код

        private void openFileToolStripMenuItem_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "Только BMP|*.bmp|А лучше только JPG|*.jpg;*.jpeg|Хотя нет, лучше все|*.*";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
             {
                 pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
              
            }  
        }


также пробовал , избегая pictureBox1. Но как тут и что?

       
Код

  
            Graphics gfx=this.CreateGraphics()
            gfx.DrawImage(Image,Point); 
         


Т.е как нажав на кнопку, открыть на пенеле графический рисунок?


Автор: genialno 23.11.2008, 23:54
разобрался с открытием  smile 
Код

if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                Graphics gfx = panel1.CreateGraphics();

                Image newImage = Image.FromFile(openFileDialog1.FileName);

                Point ulCorner = new Point(100, 100);

                gfx.DrawImage(newImage, ulCorner);
            }
        }


надо читать MSDN  )

Автор: genialno 24.11.2008, 00:21
условие то же.

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

private void saveFileToolStripMenuItem_Click(object sender, EventArgs e)
        {
         
            Stream myStream;
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();

            saveFileDialog1.Filter = "bmp files (*.bmp)|*.bmp|All files (*.*)|*.*";
            saveFileDialog1.FilterIndex = 2;
            saveFileDialog1.RestoreDirectory = true;

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if ((myStream = saveFileDialog1.OpenFile()) != null)
                {
                    // Code to write the stream goes here.
                    myStream.Close();
                }
            }


файл создаёт, но размер файла бмп равен 0(пустой).
Чего-то не хватает  в коде... Чего?

Автор: metis 26.11.2008, 10:37
Такой вариант подойдет:
Код

                SaveFileDialog sfd = new SaveFileDialog();
                sfd.Filter = " JPEG|*.jpg|BMP|*.bmp";
                sfd.ShowDialog();
                if (sfd.FileName != "")
                {
                    FileStream stream = (FileStream)sfd.OpenFile();
                    switch (sfd.FilterIndex)
                    {
                        case 1:
                            pictureBox1.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
                            break;
                        case 2:
                            pictureBox1.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
                            break;
                     }
                    stream.Close();

                }

Автор: genialno 7.12.2008, 14:14

1)
Цитата(metis @  26.11.2008,  10:37 Найти цитируемый пост)
pictureBox1........

было же написано, без  pictureBox.


2)сам разобрался )



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