Laden...

UnlockedPictureBox

Erstellt von Programmierhans vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.785 Views
Programmierhans Themenstarter:in
4.221 Beiträge seit 2005
vor 16 Jahren
UnlockedPictureBox

Beschreibung:

Hier mal wieder ein kleines und kurz zusammengepinseltes Control.

UnlockedPictureBox. Diese Picture-Box kann Bilder laden und auf ganz einfache Weise wieder in dasselbe File speichern. (ohne den nervigen "Allgemeiner Fehler in GDI+").

Dieses Control darf frei verwendet werden.
Wer irgendwelche Fehler im Code findet, der darf sie (die Fehler) behalten.

Gruss
Programmierhans


using System;
using System.Windows.Forms;
using System.IO;

namespace UnlockedPictureBox
{
	/// <summary>
	/// Zusammenfassung für UnlockedPictureBox.
	/// </summary>
	public class UnlockedPictureBox:PictureBox
	{
		#region Fields
		private string _FileName;
		private FileStream _FileStream;
		#endregion

		#region Constructor / IDisposable
		public UnlockedPictureBox()
		{
		}
		

		protected override void Dispose(bool disposing)
		{
			if (this.Image!=null)
			{
				this.Image.Dispose();
			}
			if (this._FileStream!=null)
			{
				this._FileStream.Close();
			}
			base.Dispose (disposing);
		}
		#endregion

		#region Public Methods
		public void LoadFromFile(string pFileName)
		{
			this._FileName=pFileName;
			if (this._FileStream!=null)
			{
				this._FileStream.Close();
			}
			this._FileStream=new System.IO.FileStream(pFileName,System.IO.FileMode.OpenOrCreate);
			this.Image=System.Drawing.Image.FromStream(this._FileStream);
		}

		public bool Save()
		{
			bool ret=false;
			if (this._FileStream!=null && this.Image!=null)
			{
				this.Image.Save(this._FileStream,this.Image.RawFormat);
				ret=true;
			}
			return ret;
		}

		public bool Save(string pFileName)
		{
			bool ret=false;
			if (this.Image!=null)
			{
				if (pFileName!=this._FileName)
				{
					FileStream fsNew=new System.IO.FileStream(pFileName,System.IO.FileMode.OpenOrCreate);
					this.Image.Save(fsNew,this.Image.RawFormat);
			
					if (this._FileStream!=null)
					{
						this._FileStream.Close();
						this._FileStream=null;
					}
					this._FileStream=fsNew;

					//Reload the File from THIS-File
					this.Image=System.Drawing.Image.FromStream(this._FileStream);
					this._FileName=pFileName;
				}
				else
				{
					this.Save();
				}
				ret=true;
			}
			return ret;
		}
		#endregion
	}
}


Schlagwörter: Image / FileStream / LoadFromFile / Save

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...