diff options
Diffstat (limited to 'MapEd/TileStrip.cs')
-rw-r--r-- | MapEd/TileStrip.cs | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/MapEd/TileStrip.cs b/MapEd/TileStrip.cs new file mode 100644 index 0000000..ac77188 --- /dev/null +++ b/MapEd/TileStrip.cs @@ -0,0 +1,113 @@ +using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MapEd
+{
+ public class TileStrip : IDisposable
+ {
+ private bool disposedValue = false;
+ private string filename;
+ private Image image;
+ private Bitmap[] bitmaps;
+ private Image[] images;
+
+ public TileStrip(string path, int size)
+ {
+ filename = path;
+ image = Image.FromFile(path);
+ bitmaps = new Bitmap[image.Width / size];
+ images = new Image[bitmaps.Length];
+ Bitmap bmp = new Bitmap(image);
+
+ for(int f = 0; f < bitmaps.Length; f++)
+ {
+ bitmaps[f] = bmp.Clone(new Rectangle(f*size, 0, size, size), System.Drawing.Imaging.PixelFormat.DontCare);
+ images[f] = Image.FromHbitmap(bitmaps[f].GetHbitmap());
+ }
+
+ bmp.Dispose();
+ }
+
+ public Image Strip
+ {
+ get
+ {
+ return image;
+ }
+ }
+
+ public int Count
+ {
+ get
+ {
+ return bitmaps.Length;
+ }
+ }
+
+ public Bitmap GetBitmap(int no)
+ {
+ return bitmaps[no];
+ }
+
+ public Image GetImage(int no)
+ {
+ return images[no];
+ }
+
+ public string SourceFile
+ {
+ get
+ {
+ return filename;
+ }
+ }
+
+ public Image[] Images
+ {
+ get
+ {
+ return images;
+ }
+ }
+
+ public Bitmap[] Bitmaps
+ {
+ get
+ {
+ return bitmaps;
+ }
+ }
+
+ protected virtual void Dispose(bool disposing)
+ {
+ if (!disposedValue)
+ {
+ if (disposing)
+ {
+ image.Dispose();
+
+ foreach(Bitmap b in bitmaps)
+ {
+ b.Dispose();
+ }
+
+ foreach(Image i in images)
+ {
+ i.Dispose();
+ }
+ }
+
+ disposedValue = true;
+ }
+ }
+
+ public void Dispose()
+ {
+ Dispose(true);
+ }
+ }
+}
|