Sphere.Core.Utility.BitmapSaver.SaveToStream C# (CSharp) 메소드

SaveToStream() 공개 메소드

Saves the image to a filestream.
public SaveToStream ( Bitmap image, BinaryWriter writer ) : void
image System.Drawing.Bitmap The image to save.
writer System.IO.BinaryWriter The System.IO.BinaryWriter to use.
리턴 void
        public void SaveToStream(Bitmap image, BinaryWriter writer)
        {
            _data = image.LockBits(_rect, ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
            unsafe
            {
                byte* ptr = (byte*)_data.Scan0;
                for (int i = 0; i < _size; ++i)
                {
                    writer.Write(*(ptr + 2));
                    writer.Write(*(ptr + 1));
                    writer.Write(*(ptr));
                    writer.Write(*(ptr + 3));
                    ptr += 4;
                }
            }
            image.UnlockBits(_data);
        }

Usage Example

예제 #1
0
        /// <summary>
        /// Savbes the tileset to a separate file.
        /// </summary>
        /// <param name="filename">The filename to save to.</param>
        public void Save(string filename)
        {
            using (BinaryWriter writer = new BinaryWriter(File.OpenWrite(filename)))
            {
                // save header data:
                writer.Write(".rts".ToCharArray());
                writer.Write(_version);
                writer.Write((short)Tiles.Count);
                writer.Write(TileWidth);
                writer.Write(TileHeight);
                writer.Write((short)32);
                writer.Write(_compression);

                foreach (Tile t in Tiles)
                    if (t.Obstructions.Count > 0) _hasObstruct = 1;

                writer.Write(_hasObstruct);
                writer.Write(new byte[240]);

                // save tile pixels:
                BitmapSaver saver = new BitmapSaver(TileWidth, TileHeight);
                foreach (Tile tile in Tiles)
                    saver.SaveToStream(tile.Graphic, writer);

                // save tile info:
                foreach (Tile t in Tiles)
                {
                    writer.Write(new byte());
                    writer.Write(t.Animated);
                    writer.Write(t.NextAnim);
                    writer.Write(t.Delay);
                    writer.Write(new byte());
                    writer.Write((byte)2);
                    writer.Write((short)t.Obstructions.Count);
                    writer.Write((short)t.Name.Length);
                    writer.Write(new byte[20]);
                    writer.Write(t.Name.ToCharArray());
                    foreach (Line l in t.Obstructions)
                    {
                        writer.Write(l.X1); writer.Write(l.Y1);
                        writer.Write(l.X2); writer.Write(l.Y2);
                    }
                }

                writer.Flush();
            }
        }
All Usage Examples Of Sphere.Core.Utility.BitmapSaver::SaveToStream