Imagebrowser, find 5 fejl
Eller forhåbentlig kun.Jeg arbejder stadig med en billedbrowser som jeg er ved at konstruere.
Jeg kan rotere billeder og men IKKE slette dem.
Koden er nedenfor men jeg tror man for at finde fejlen blive nødt til at have HELE PROJEKTET for at kunne finde fejlen.
FØRST BILLEDKLASSEN SOM INDEHOLDER ET IMAGE OG EN FILEINFO.
ENDVIDERE EN BOOL FREMKALDELSE, SOM HVIS SAND LÆGGER BILLEDET I "c:\fremkaldelse\"
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Text;
using System.IO;
using System.Windows.Forms;
namespace PictureBrowser
{
public class PictureClass
{
private System.Drawing.Image image;
private FileInfo fi;
private bool fremkaldelse;
public PictureClass(System.Drawing.Image image, FileInfo fi)
{
this.image =image;
this.fi= fi;
this.fremkaldelse = false;
}
public FileInfo FileInfo
{
get { return fi; }
set { fi = value; }
}
public System.Drawing.Image Image
{
get { return image; }
set { image = value; }
}
public bool Fremkaldelse
{
get { return fremkaldelse; }
set { fremkaldelse = value; }
}
public void RotateImg(bool clockwise)
{
if (clockwise)
Image.RotateFlip(System.Drawing.RotateFlipType.Rotate90FlipNone);
else
Image.RotateFlip(System.Drawing.RotateFlipType.Rotate270FlipNone);
Save();
}
public void fremkald(bool Fremkald)
{
if (Fremkald)
{
File.Copy(fi.FullName, @"c:\fremkaldelse\" + fi.Name, true);
fremkaldelse = true;
}
else
{
if (File.Exists(@"c:\fremkaldelse\" + fi.Name))
File.Delete(@"c:\fremkaldelse\" + fi.Name);
fremkaldelse = false;
}
}
public void Save()
{
Encoding enc = new ASCIIEncoding();
string timeStr=null;
foreach (PropertyItem pi in image.PropertyItems)// If the PropertyItem is a timestamp...
if (pi.Type == 2 /* text */ && pi.Id == 306 /* date and time */)
timeStr = enc.GetString(pi.Value).Replace(" ",":");// get the timestamp.
string[] a=new string[6];
a = timeStr.Substring(0, timeStr.Length - 1).Split(':') ;
DateTime time = new DateTime(Convert.ToInt32(a[0]), Convert.ToInt32(a[1]), Convert.ToInt32(a[2]), Convert.ToInt32(a[3]), Convert.ToInt32(a[4]), Convert.ToInt32(a[5]));
Image.Save(fi.FullName, System.Drawing.Imaging.ImageFormat.Jpeg);
File.SetLastWriteTime(fi.FullName,time);
}
}
}
DERNÆST EN CONTAINER TIL BILLEDEKLASSEN:
using System;
using System.Collections.Generic;
using System.IO;
using System.Drawing;
using System.Windows.Forms;
namespace PictureBrowser
{
public class ConPicture
{
private Form1 f;
List<PictureClass> PictureList = null;
private string path;
private int pic1_Number;
public ConPicture(Form1 f, string path)
{
this.f = f;
this.path = path;
PictureList = new List<PictureClass>();
}
public int Pic1_Number
{
get { return pic1_Number; }
set { pic1_Number = value; }
}
public void RotateImg(int imagebox, int x_korr)
{
int picNbr = imagebox + pic1_Number - 1;
bool clockwise = false;
switch (imagebox)
{
case 1:
if (x_korr < f.picBox1.Width / 2)
clockwise = true;
break;
case 2:
if (x_korr < f.picBox2.Width / 2)
clockwise = true;
break;
case 3:
if (x_korr < f.picBox3.Width / 2)
clockwise = true;
break;
case 4:
if (x_korr < f.picBox4.Width / 2)
clockwise = true;
break;
}
PictureList[picNbr].RotateImg(clockwise);
f.picBox1.Refresh();
f.picBox2.Refresh();
f.picBox3.Refresh();
f.picBox4.Refresh();
}
public int Count()
{
return PictureList.Count;
}
public void Fremkaldelse(int imageBox,bool fremkald)
{
int picNbr = imageBox + pic1_Number - 1;
PictureList[picNbr].fremkald(fremkald);
}
public void Add(PictureClass pic)
{
PictureList.Add(pic);
}
public System.Drawing.Image AddAndGet(int i) {
DirectoryInfo d = new DirectoryInfo(path);
FileInfo[] fiList = d.GetFiles("*.jpg");
System.Drawing.Image image = null;
if (i >= 0 && i < fiList.Length)//hvis i er ikke på disken
{
//hvis i ikke er i picturelisten
if (i >= PictureList.Count)
{
image = Image.FromFile(fiList[i].FullName);//så hent det fra disk
PictureList.Add(new PictureClass(image, fiList[i]));//tilføj det til listen
}
else
image = PictureList[i].Image;
}
return image;//retuner det
}
public string ImageName(int nbrInFileInfoArr)
{
string result;
DirectoryInfo d = new DirectoryInfo(path);
FileInfo[] fiList = d.GetFiles("*.jpg");
result= fiList[nbrInFileInfoArr].Name;
return result;
}
public string ImageLastWrite(int nbrInFileInfoArr)
{
string result;
DirectoryInfo d = new DirectoryInfo(path);
FileInfo[] fiList = d.GetFiles("*.jpg");
result = Convert.ToString( fiList[nbrInFileInfoArr].LastWriteTime);
return result;
}
public bool satTilFremkald(int nbrInFileInfoArr)
{
DirectoryInfo d = new DirectoryInfo(path);
FileInfo[] fiList = d.GetFiles("*.jpg");
if(File.Exists(@"c:\fremkaldelse\" + fiList[nbrInFileInfoArr].Name))
return true;
else
return false;
}
public void DeletePicture(int imagebox)
{
try
{
//the pointer pic1_Number describes what is the image in box 1 and therefor also the image i box2,box3,box4
//the argument of this metode
int picToRemove = pic1_Number + imagebox - 1;
string fil=PictureList[picToRemove].FileInfo.FullName;
int l = 0;
l = PictureList.Count;
PictureList.RemoveAt(picToRemove);
l = PictureList.Count;
File.Delete(fil);
f.picBox1.Image = AddAndGet(Pic1_Number + 0);
f.picBox1.Image = AddAndGet(Pic1_Number + 1);
f.picBox1.Image = AddAndGet(Pic1_Number + 2);
f.picBox1.Image = AddAndGet(Pic1_Number + 3);
}
catch (Exception e)
{
MessageBox.Show("E!: " + e.Message);
return;
}
}
}
}
X_korr kommer fra en clickevent. Hvis man klikker i højre side af billeder vendes det mod højre side op.
Klikker man i venstre vendes venstre side op.
JEG ER BARE KØRT FAST OG GAV GERNE 500 POINT HVIS JEG MÅTTE.
Michael
