Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запись и чтение параметров изображения в текстовый файл

54K
14 января 2010 года
Game1024
3 / / 14.01.2010
Здравствуйте.
Создаю приложение, которое способно загружать изображение, изменять его параметры путем перемещения скроллов, сохранять параметры в текстовый файл и считывать их оттуда.

Исходный код
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace arbuzzz
{
   
    public partial class Form1 : Form
    {
        double aspect;
        string image_path;
   
        public Form1()
        {
            InitializeComponent();
            pictureBox1.Left = 0;
            pictureBox1.Top = 0;
            pictureBox1.Width = 200;
            pictureBox1.Height = 150;
            pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
            hScrollBar3.Maximum = this.Size.Width;
            hScrollBar4.Maximum = this.Size.Width;

        }

        private void оПрограммеToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("hello world?");
        }

        private void открытьИзображениеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog openfiledialog = new OpenFileDialog();
            openfiledialog.Filter = "png files (*.png)|*.png|All files (*.*)|*.*";
            openfiledialog.FilterIndex = 2;
            openfiledialog.RestoreDirectory = true;
            if (openfiledialog.ShowDialog() == DialogResult.OK)
            {
                if (openfiledialog.OpenFile() != null)
                {
                    pictureBox1.Image = System.Drawing.Image.FromFile(openfiledialog.FileName);
                    pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
                    hScrollBar2.Maximum = pictureBox1.Height * 2;
                    hScrollBar2.Value = pictureBox1.Height;
                    textBox2.Text =  pictureBox1.Height.ToString();
                    hScrollBar1.Maximum = pictureBox1.Width * 2;
                    hScrollBar1.Value = pictureBox1.Width;
                    textBox1.Text = pictureBox1.Width.ToString();
                    aspect = Convert.ToDouble(pictureBox1.Image.Width) / Convert.ToDouble(pictureBox1.Image.Height);
                    image_path = openfiledialog.FileName.ToString();
                   
                    pictureBox1.Width = hScrollBar1.Value;
                    textBox1.Text = pictureBox1.Width.ToString();
                    pictureBox1.Height = hScrollBar2.Value;
                    textBox2.Text = pictureBox1.Height.ToString();

                    if (checkBox1.Checked)
                    {
                        pictureBox1.Width = Convert.ToInt16(hScrollBar1.Value / aspect);
                        textBox1.Text = pictureBox1.Width.ToString();
                        hScrollBar1.Value = pictureBox1.Width;

                        pictureBox1.Height = Convert.ToInt16(hScrollBar2.Value / aspect);
                        textBox2.Text = pictureBox1.Height.ToString();
                        hScrollBar2.Value = pictureBox1.Height;  

                    }

                }
            }
           

        }

        private void открытьФайлПараметровToolStripMenuItem_Click(object sender, EventArgs e)
        {
            System.IO.Stream myStream;
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Txt files (*.txt)|*.txt|All files (*.*)|*.*";
            openFileDialog.FilterIndex = 1;
            openFileDialog.RestoreDirectory = true;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                if ((myStream = openFileDialog.OpenFile()) != null)
                {
                    System.IO.StreamReader rw = new System.IO.StreamReader(myStream);
                    string line;
                    while ((line = rw.ReadLine()) != null)
                    {
                        listBox1.Items.Add(line);
                        //Если в строке есть параметр Path, то извлекаем его значение и загружаем изображение
                        if (line.IndexOf("Path=") != -1)
                        {
                            pictureBox1.Image = System.Drawing.Image.FromFile(line.Substring(5));
                            image_path = line.Substring(5);
                            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
                            hScrollBar2.Maximum = pictureBox1.Height * 2;
                            hScrollBar2.Value = pictureBox1.Height;
                            textBox2.Text = pictureBox1.Height.ToString();
                            hScrollBar1.Maximum = pictureBox1.Width * 2;
                            hScrollBar1.Value = pictureBox1.Width;
                            textBox1.Text = pictureBox1.Width.ToString();
                            aspect = Convert.ToDouble(pictureBox1.Image.Width) / Convert.ToDouble(pictureBox1.Image.Height);

                            pictureBox1.Width = hScrollBar1.Value;
                            textBox1.Text = pictureBox1.Width.ToString();
                            pictureBox1.Height = hScrollBar2.Value;
                            textBox2.Text = pictureBox1.Height.ToString();
                        }
                        if (line.IndexOf("Width=") != -1)
                        {

                        }
                    }
                }
            }
        }

        private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
        {
             pictureBox1.Width = hScrollBar1.Value;
             textBox1.Text = pictureBox1.Width.ToString();
                       
        }

        private void hScrollBar2_Scroll(object sender, ScrollEventArgs e)
        {
             pictureBox1.Height = hScrollBar2.Value;
             textBox2.Text = pictureBox1.Height.ToString();

        }

        private void сохранитьПараметрыToolStripMenuItem_Click(object sender, EventArgs e)
        {
            System.IO.Stream myStream;
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Filter = "Txt files (*.txt)|*.txt|All files (*.*)|*.*";
            saveFileDialog.FilterIndex = 1;
            saveFileDialog.RestoreDirectory = true;
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
              {
               if ((myStream = (System.IO.FileStream)saveFileDialog.OpenFile()) != null)
                 {
                  System.IO.StreamWriter sw = new System.IO.StreamWriter(myStream);
                  //сохраняем параметры
                  sw.WriteLine("Path = C:\arbuz.txt");
                  sw.WriteLine("Width = {0}",pictureBox1.Width.ToString());
                  sw.WriteLine("Height = {0}", pictureBox1.Height.ToString());
                  sw.WriteLine("Top = {0}", pictureBox1.Top.ToString());
                  sw.WriteLine("Left = {0}",  pictureBox1.Left.ToString());
                  sw.WriteLine("SaveAspect = {0}", aspect.ToString());
                  sw.Close();
                 }
                }
                    }
                             
    }
}
Загвоздка произошла в  функции для чтения файла параметров.
// Если в строке есть параметр Width
if (line.IndexOf("Width=") != -1)
// то читаем его и назначаем

 {
   }
//Если в строке есть параметр Height, то читаем его и назначаем

и т.д.
Каким образом прочитать значение Width из файла назначить его?

Также где-то должен быть дублирующаяся часть кода (вероятно настройки скроллов Width.Maximum, Height.Maximum, Height.Value, Width.Value, aspect , pictureBox1.SizeMode)

Буду благодарен за ответы.
54K
19 января 2010 года
Game1024
3 / / 14.01.2010
Проблема решена
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог