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)
Буду благодарен за ответы.
Проблема решена