public TestCircle() { m_pntVel = new EPointF(0, 0); m_pntThrust = new EPoint(0, 0); aKeysPressedX = new ArrayList(); aKeysPressedY = new ArrayList(); Bitmap bmp = new Bitmap(40, 40, PixelFormat.Format24bppRgb); Graphics g = Graphics.FromImage(bmp); g.FillEllipse(new SolidBrush(Color.Red), 0, 0, 40, 40); g.Dispose(); MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp); mb.CenterRegPoint(); Member = mb; m_aLines = new ArrayList(); for (int i = 0; i < 1; i++) { TestLine line = new TestLine(m_endogine); line.SetLine(new EPointF((i) * 150, 0), new EPointF((i + 1) * 150, 150)); m_aLines.Add(line); } LocZ = 10; Loc = new EPointF(171, 171); m_endogine.KeyEvent += new KeyEventHandler(m_endogine_KeyEvent); }
public Dragbar() { this.m_bNoScalingOnSetRect = true; Name = "Dragbar"; m_frame = new Frame(); m_frame.Parent = this; m_frame.MouseActive = true; m_frame.MouseEvent += new MouseEventDelegate(m_frame_MouseEvent); MemberSpriteBitmap mb = (MemberSpriteBitmap)m_endogine.CastLib.GetOrCreate("Button2Up"); m_frame.Member = mb; m_frame.Ink = RasterOps.ROPs.BgTransparent; m_frame.Member.ColorKey = Color.FromArgb(0, 0, 0); m_frame.LocZ = 1; m_btnClose = new Button(); m_btnClose.Parent = this; m_btnClose.MouseActive = true; m_btnClose.MouseEvent += new MouseEventDelegate(m_btnClose_MouseEvent); m_btnClose.Ink = RasterOps.ROPs.D3DTest2; m_btnClose.LocZ = 2; LabelGDI lbl = new LabelGDI(); lbl.Parent = this; lbl.Name = "Title"; lbl.Text = "Dialog"; lbl.LocZ = 3; }
private void CreateVisualization() { if (this.bConstructing) { return; } this.bmpTopology = this.CreateBitmap(); Bitmap bmp = (Bitmap)this.bmpTopology.Clone(); Endogine.BitmapHelpers.Filters.EmbossFrom24BitGrayscale(bmp); this.bmpInclination = this.CreateInclinationBitmap(this.bmpTopology); bmp = this.bmpInclination; // Bitmap bmp2 = this.SplitInvert(bmp); MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp); //mb.CenterRegPoint(); this.Member = mb; this.Ink = RasterOps.ROPs.AddPin; for (int i = this.ChildCount - 1; i >= 0; i--) { this.GetChildByIndex(i).Dispose(); } // Sprite sp = new Sprite(); // sp.Parent = this; // MemberSpriteBitmap mb2 = new MemberSpriteBitmap(bmp2); // sp.Member = mb2; // sp.Ink = RasterOps.ROPs.SubtractPin; }
public Sprite CreateSprite() { //TODO: check if we've already created a member! System.Drawing.Bitmap bmp = this.Bitmap; if (bmp == null) { return(null); } Sprite sp = new Sprite(); sp.Name = this.Name; sp.LocZ = this.LayerID; sp.Blend = this.Opacity; //TODO: //sp.Loc = layerInfo.ReferencePoint; //sp.Ink = layerInfo.BlendKey; sp.Color = this.SheetColor; MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp); sp.Member = mb; foreach (EffectLayers.Effect effect in this.Effects) { } return(sp); }
private void CreateNew(int a_nLocX) { Sprite sp = new Sprite(); sp.Name = "Obstacle"; sp.LocZ = 5; //TODO: new animation system MemberSpriteBitmap mb = (MemberSpriteBitmap)EndogineHub.Instance.CastLib.GetOrCreate("asteroid01"); //mb.NumFramesPerAxis = new EPoint(7,6); sp.Member = mb; if (a_nLocX <= 0) { a_nLocX = GameMain.Instance.CaveWalls.GetMaxX(); } float[] walls = GameMain.Instance.CaveWalls.GetWallsYOnX(a_nLocX); Random rnd = new Random(); sp.Loc = new EPointF(a_nLocX, (walls[1] - walls[0]) * (float)rnd.NextDouble() + walls[0]); //sp.AutoAnimator.StepSize = 0.1f; sp.Scaling = new EPointF(0.3f, 0.3f); BhReportWhenOutside bh = new BhReportWhenOutside(); sp.AddBehavior(bh); bh.Outside += new CaveHunter.BhReportWhenOutside.OutsideDelegate(bh_Outside); m_obstacles.Add(sp); }
public Colorizer() { Bitmap bmp = new Bitmap(1, 1); Graphics g = Graphics.FromImage(bmp); g.FillRectangle(new SolidBrush(Color.FromArgb(255, 255, 255)), 0, 0, 1, 1); Endogine.MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp); this.Member = mb; this.Ink = RasterOps.ROPs.SubtractPin; }
public void Create(int width, int height) { Bitmap bmp = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); Graphics g = Graphics.FromImage(bmp); g.FillRectangle(new SolidBrush(Color.White), 0, 0, bmp.Width, bmp.Height); MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp); this.Member = mb; this._canvas = this.Member.Canvas; //this._pm = this.Member.PixelManipulator; }
private Sprite CreateSpriteWithMemberAndAxis(MemberSpriteBitmap mb, string axis) { Sprite sp = new Sprite(); sp.Name = axis; sp.Parent = this.m_sp; sp.Member = mb; sp.LocZ = 1000; m_aSprites.Add(sp); sp.MouseActive = true; sp.MouseEvent += new Endogine.Sprite.MouseEventDelegate(sp_MouseEvent); return(sp); }
public MemberSpriteBitmap CreateAsMember(int nTwipSize) { Bitmap bmp = this.RenderToBitmap(nTwipSize); if (bmp == null) { return(null); } MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp); mb.Name = "Flash_" + this.Id.ToString(); mb.RegPoint = this.Bounds.Location * -1; //.ToEPoint() return(mb); }
public static void LoadMovie(string a_sFilename, Sprite a_sp) { FileInfo fileMovie = new FileInfo(a_sFilename); FileInfo[] files = fileMovie.Directory.GetFiles(); foreach (FileInfo file in files) { System.Type type = GetFileWouldBeMemberType(file.FullName); if (type == typeof(MemberSpriteBitmap)) { MemberSpriteBitmap mb = new MemberSpriteBitmap(file.FullName); } } Load(a_sFilename, a_sp); }
public MeterBar() { this.m_bMeInvisibleButNotChildren = true; this.Name = "MeterBar"; this.SourceRect = new ERectangle(0,0,1,1); m_spBar = new Sprite(); m_spBar.Parent = this; MemberSpriteBitmap mb = new MemberSpriteBitmap( Endogine.BitmapHelpers.BitmapHelper.CreateFilledBitmap(new EPoint(1,1), System.Drawing.Color.FromArgb(255,255,255))); m_spBar.Member = mb; Value = 0; }
public MeterBar() { this.m_bMeInvisibleButNotChildren = true; this.Name = "MeterBar"; this.SourceRect = new ERectangle(0, 0, 1, 1); m_spBar = new Sprite(); m_spBar.Parent = this; MemberSpriteBitmap mb = new MemberSpriteBitmap( Endogine.BitmapHelpers.BitmapHelper.CreateFilledBitmap(new EPoint(1, 1), System.Drawing.Color.FromArgb(255, 255, 255))); m_spBar.Member = mb; Value = 0; }
public static Dictionary <char, int[, ]> CreatePicRefs(Font font, string characters, List <object> pensAndBrushes) { Bitmap[] bitmaps = FontGenerator.Generate(font, characters, pensAndBrushes); ERectangle[] rects; EPoint[] offsets; Bitmap bmpLarge = Endogine.BitmapHelpers.TexturePacking.TreePack(bitmaps, out rects, out offsets); //.PackBitmapsIntoOneLarge(trimmedBmps, null, out node); Dictionary <char, int[, ]> profiles = new Dictionary <char, int[, ]>(); for (int i = 0; i < bitmaps.Length; i++) { Bitmap bmp = bitmaps[i]; int[,] profile = GetProfile(bmp); profiles.Add(characters[i], profile); } MemberSpriteBitmap mb = new MemberSpriteBitmap(bmpLarge); string name = GetPrefix(font); mb.Name = name; string[] names = new string[characters.Length]; for (int i = 0; i < characters.Length; i++) { names[i] = ((int)characters[i]).ToString(); } //bmpLarge.Save("_fonttest.png"); //Endogine.BitmapHelpers.TexturePacking.CreateDocFromRectsAndOffsets(rects, offsets, names).Save("_fonttest.xml"); for (int i = 0; i < bitmaps.Length; i++) { PicRef pic = new PicRef(name + "_" + characters.Substring(i, 1), mb); pic.Offset = new EPoint(0, offsets[i].Y); //Ignore the X offset pic.SourceRectangle = rects[i]; //EH.Instance.CastLib.Pictures.AddPicture(pic); } return(profiles); }
public void SetLine(EPointF a_pnt1, EPointF a_pnt2) { m_rct = ERectangleF.FromLTRB(a_pnt1.X, a_pnt1.Y, a_pnt2.X, a_pnt2.Y); if (Member != null) { Member.Dispose(); } Loc = m_rct.Location; Bitmap bmp = new Bitmap((int)Math.Abs(m_rct.Width), (int)Math.Abs(m_rct.Height), PixelFormat.Format24bppRgb); Graphics g = Graphics.FromImage(bmp); //Point pnt1 = a_pnt1; //if (a_pnt1.Y <= a_pnt2.Y && a_pnt1.X <= a_pnt2.X) g.DrawLine(new Pen(Color.White, 1), new Point(0, 0), new Point((int)m_rct.Width, (int)m_rct.Height)); g.Dispose(); MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp); Member = mb; }
private void CreateDragDropSprite(System.Windows.Forms.DragEventArgs e) { string[] aInfo = GetDraggedInfo(e); if (aInfo == null) { return; } if (aInfo[0] == "Member" || aInfo[0] == "File") { //Endogine.ResourceManagement.MemberBase mb = EH.Instance.CastLib.GetByName(aInfo[1]); Endogine.ResourceManagement.MemberBase mb = EH.Instance.CastLib.GetOrCreate(aInfo[1]); MemberSpriteBitmap mbSp = (MemberSpriteBitmap)mb; this.draggedSprite = new Sprite(); this.draggedSprite.Member = mbSp; Point pnt = dragToControl.PointToClient(new Point(e.X, e.Y)); //Point pnt = EH.Instance.Stage.RenderControl.PointToClient(new Point(e.X, e.Y)); this.draggedSprite.Loc = new EPointF(pnt); EH.Instance.LatestCreatedSprites = null; this.draggedSprite.Parent = EH.Instance.SpriteToAddChildrenTo; if (this.draggedSprite.Disposing) { //after setting parent, the sprite may have been disposed, //and transformed into another sprite-derived type. //this.draggedSprite = null; this.draggedSprite = EH.Instance.LatestCreatedSprites[0]; } //System.Runtime.Remoting.ObjectHandle obj = System.Activator.CreateInstance("EndoTest01", "Endogine.ResourceManagement.MemberBase"); //object o = obj.Unwrap(); //Endogine.ResourceManagement.MemberBase mb = (Endogine.ResourceManagement.MemberBase)o; } }
public Car() { this._carType = new CarType(); this._carType.CenterOfMassToFront = 1; //2.5f; this._carType.CenterOfMassToRear = 1; // 1.5f; this._carType.CenterOfMassToGround = 1; // 0.5f; this._carType.Wheelbase = this._carType.CenterOfMassToFront + this._carType.CenterOfMassToRear; //2f; this._carType.Mass = 1500; this._carType.Inertia = 1500; this._carType.Width = 1.5f; // 2; this._carType.Length = 3; // 4.5f; this._carType.WheelLength = 0.7f; this._carType.WheelWidth = 0.3f; this._environment = new Environment(); this._environment.Drag = 5; this._environment.Resistance = 30; this._environment.CornerStiffnessR = -5.2f; this._environment.CornerStiffnessF = -5.0f; this._environment.MaxGrip = 2; float size = 5; Bitmap bmp = new Bitmap((int)(this._carType.Width * size), (int)(this._carType.Length * size), System.Drawing.Imaging.PixelFormat.Format32bppArgb); Graphics g = Graphics.FromImage(bmp); g.FillRectangle(new SolidBrush(Color.Red), new Rectangle(0, 0, bmp.Width, bmp.Height)); g.FillRectangle(new SolidBrush(Color.Blue), new Rectangle(0, 3 * bmp.Height / 4, bmp.Width, bmp.Height / 4)); g.Dispose(); MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp); this.Member = mb; this._keys = new KeysSteering(Endogine.KeysSteering.KeyPresets.ArrowsSpace); this._keys.AddKeyPreset(KeysSteering.KeyPresets.awsdCtrlShift); this._keys.ReceiveEndogineKeys(null); }
public Sprite Execute(Flash player, Sprite spExistingSprite) { if (spExistingSprite == null) { Sprite sp = new Sprite(); sp.TextureFilter = Sprite.TextureFilters.High; sp.LocZ = this.Depth; sp.Ink = RasterOps.ROPs.BgTransparent; //sp.Visible = false; spExistingSprite = sp; //EH.Put("New sprite"); } ushort characterId = this.CharacterId; if (this.CharacterId > 0) { this.Owner.CharacterIdsByDepth[this.Depth] = this.CharacterId; } else { characterId = (ushort)this.Owner.CharacterIdsByDepth[this.Depth]; } object character = this.Owner.Characters[characterId]; //EH.Put("Depth: "+this.Depth.ToString()); if (character == null) { throw new Exception("Error - no character. Id: " + characterId.ToString()); } //EH.Put("Char: "+character.GetType().ToString() + " "+characterId.ToString()); if (this.Matrix != null) { spExistingSprite.Loc = new EPointF(this.Matrix.Tx, this.Matrix.Ty); ///player.TwipSize; spExistingSprite.Scaling = new EPointF(this.Matrix.A, this.Matrix.D) / 65535; //EH.Put("Loc: "+spExistingSprite.Loc.ToString() + " Sc: "+spExistingSprite.Scaling.ToString()); //TODO: rotation etc } MemberSpriteBitmap mb = null; if (character != null) { if (character is Shape.MorphShape) { //EH.Put("Ratio:"+this.Ratio); Shape.MorphShape ms = (Shape.MorphShape)character; EPoint ptOffset; string sOut = "MS" + ms.Id.ToString() + "-" + this.Ratio.ToString().PadLeft(5, '0') + "d" + this.Depth; // if (this.Ratio == 0) // { // System.Collections.ArrayList morphed = ms.CreateMorphedShape((float)this.Ratio/65535); // string s = ms.WriteCommands(morphed); // Endogine.Files.FileReadWrite.Write(sOut+".txt", s); // // Shape.MorphShape.Debug = false; // if (this.Depth == 6) // Shape.MorphShape.Debug = true; // } Bitmap bmp = ms.RenderToBitmap(this.Owner.TwipSize, (float)this.Ratio / 65535, out ptOffset); if (bmp == null) { return(null); } mb = new MemberSpriteBitmap(bmp); mb.RegPoint = ptOffset * -1; //bmp.Save(sOut+".png"); //mb.RegPoint = this.Bounds.Location*-1; //.ToEPoint() } else if (character is Shape.Shape) { Shape.Shape shape = (Shape.Shape)character; mb = (MemberSpriteBitmap)this.Owner.Members[shape.Id]; if (mb == null) { // Bitmap bmp = shape.RenderToBitmap(this.Owner.TwipSize); // bmp.Save("S"+shape.Id+"d"+this.Depth+".png"); // // string s = shape.WriteCommands(shape.CommandList); // Endogine.Files.FileReadWrite.Write("S0d"+this.Depth+".txt", s); mb = shape.CreateAsMember(this.Owner.TwipSize); if (mb != null) { mb.Name = "Flash_" + shape.Id.ToString(); } this.Owner.Members[shape.Id] = mb; } } } if (mb == null) { mb = (MemberSpriteBitmap)EH.Instance.CastLib.GetByName("BallGreen"); } spExistingSprite.Member = mb; return(spExistingSprite); }
public void SetMemberBitmap(MemberSpriteBitmap a_mb) { m_mb = a_mb; }
public Sprite CreateSprite() { //TODO: check if we've already created a member! System.Drawing.Bitmap bmp = this.Bitmap; if (bmp == null) return null; Sprite sp = new Sprite(); sp.Name = this.Name; sp.LocZ = this.LayerID; sp.Blend = this.Opacity; //TODO: //sp.Loc = layerInfo.ReferencePoint; //sp.Ink = layerInfo.BlendKey; sp.Color = this.SheetColor; MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp); sp.Member = mb; foreach (EffectLayers.Effect effect in this.Effects) { } return sp; }
private void miGDIPerlin_Click(object sender, System.EventArgs e) { if (m_spProcedural == null) { #region Procedural noise bitmap Random rnd = new Random(); Endogine.Procedural.Noise procedural = null; switch (rnd.Next(4)) { case 0: procedural = new Endogine.Procedural.Plasma(); procedural.Decay = 0.5f; procedural.Frequency = 0.1f; procedural.Octaves = 3; break; case 1: procedural = new Endogine.Procedural.Wood(); procedural.Decay = 0.5f; procedural.Frequency = 0.1f; procedural.Octaves = 3; ((Endogine.Procedural.Wood)procedural).NumCircles = 5; ((Endogine.Procedural.Wood)procedural).Turbulence = 0.3f; break; case 2: procedural = new Endogine.Procedural.Marble(); procedural.Decay = 0.5f; procedural.Frequency = 0.1f; procedural.Octaves = 3; ((Endogine.Procedural.Marble)procedural).Periods = new EPointF(15, 30); ((Endogine.Procedural.Marble)procedural).Turbulence = 3.3f; break; case 3: procedural = new Endogine.Procedural.Noise(); procedural.Decay = 0.5f; procedural.Frequency = 1f; procedural.Octaves = 3; break; } Bitmap bmp; Graphics g; bmp = new Bitmap(200, 200); Endogine.BitmapHelpers.Canvas canvas = Endogine.BitmapHelpers.Canvas.Create(bmp); //create a color table that makes it look like lakes and mountains: System.Collections.SortedList aColors = new System.Collections.SortedList(); aColors.Add(0.0, Color.FromArgb(0, 0, 190)); aColors.Add(0.1, Color.FromArgb(0, 0, 255)); aColors.Add(0.11, Color.FromArgb(0, 200, 0)); aColors.Add(0.5, Color.FromArgb(150, 100, 0)); aColors.Add(1.0, Color.FromArgb(255, 255, 255)); procedural.SetColors(aColors); //write pixels to bitmap: canvas.Locked = true; procedural.WriteToBitmap(canvas); canvas.Locked = false; #endregion #region Create gradient bitmap //Create two gradients using GDI+, and merge them with my CopyPixels for special effects Bitmap bmpGradient = new Bitmap(200, 200); g = Graphics.FromImage(bmpGradient); LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(4, 0, bmpGradient.Width, bmpGradient.Height), Color.FromArgb(255, 0, 0), Color.FromArgb(0, 255, 0), 0f); g.FillRectangle(brush, brush.Rectangle); Bitmap bmp2 = new Bitmap(bmpGradient.Width, bmpGradient.Height); brush = new LinearGradientBrush(new Rectangle(0, 0, bmp2.Width, bmp2.Height), Color.FromArgb(0, 0, 255), Color.FromArgb(0, 0, 0), (float)90); Graphics g2 = Graphics.FromImage(bmp2); g2.FillRectangle(brush, brush.Rectangle); RasterOps.CopyPixels(bmpGradient, bmp2, (int)RasterOps.ROPs.AddPin, 255); RasterOps.CopyPixels(bmp, bmpGradient, (int)RasterOps.ROPs.Lightest, 255); g.Dispose(); #endregion MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp); m_spProcedural = new Sprite(); m_spProcedural.Name = "Procedural"; m_spProcedural.Member = mb; m_spProcedural.Scaling = new EPointF(2, 2); m_spProcedural.Ink = 0; } else { //TODO: the bitmap will still remain in memory, should have an "autodispose" option, //so that resources gets disposed when no sprites are using them m_spProcedural.Dispose(); m_spProcedural = null; } }
public Brush GetBrush() { Brush brush = null; switch (this.FillStyleType) { case FillStyleTypes.Solid: if (this.MorphPosition > 0) { //brush = new SolidBrush(ColorEx.ColorHsb.InterpolateRgbInHsbSpace(Color.Red, Color.Green, this.MorphPosition)); brush = new SolidBrush(ColorEx.ColorHsb.InterpolateRgbInHsbSpace(this.Color, this.ColorEnd, this.MorphPosition)); } else { brush = new SolidBrush(this.Color); } break; case FillStyleTypes.RadialGradient: case FillStyleTypes.LinearGradient: //TODO: radial if (this.MorphPosition > 0) { //TODO: this.GradientEnd this.MatrixEnd } LinearGradientBrush gradBrush = new LinearGradientBrush(new PointF(0, 0), new PointF(0, 1), Color.White, Color.Black); gradBrush.InterpolationColors = this.Gradient; gradBrush.Transform = this.Matrix.GetDotNet(); brush = gradBrush; break; case FillStyleTypes.RepeatingBitmap: case FillStyleTypes.ClippedBitmap: case FillStyleTypes.NonSmoothedRepeatingBitmap: case FillStyleTypes.NonSmoothedClippedBitmap: MemberSpriteBitmap mb = (MemberSpriteBitmap)EH.Instance.CastLib.GetByName("Flash_" + this.CharacterId.ToString()); Bitmap bmp = mb.Bitmap; if (this.MorphPosition > 0) { //TODO: this.BitmapFillMatrixEnd } //TODO: BitmapFillMatrix ImageAttributes attr = new ImageAttributes(); if (this.FillStyleType == FillStyleTypes.RepeatingBitmap || this.FillStyleType == FillStyleTypes.NonSmoothedRepeatingBitmap) { attr.SetWrapMode(WrapMode.Tile); } else { attr.SetWrapMode(WrapMode.Clamp); } TextureBrush txBrush = new TextureBrush(bmp, new RectangleF(0, 0, 1, 1), attr); if (this.Matrix != null) { txBrush.Transform = this.Matrix.GetDotNet(); } break; } return(brush); }
public override void Init(Record record) { base.Init (record); BinaryFlashReader reader = record.GetDataReader(); this.Id = reader.ReadUInt16(); Bitmap bmp = null; byte[] alphaData = null; if (record.Tag == Flash.Tags.DefineBits) //Jpeg with separate jpeg table { ushort start = reader.ReadUInt16(); if (start != 0xd8ff) throw new Exception("JPEG start error"); MemoryStream stream = new MemoryStream(); BinaryWriter writer = new BinaryWriter(stream); writer.Write(this._jpegTables); writer.Write(reader.ReadBytes((int)record.TagLength)); this._jpegTables = null; writer.Close(); stream.Close(); byte[] data = stream.ToArray(); stream = new MemoryStream(data); bmp = new Bitmap(stream); stream.Close(); } else if (record.Tag == Flash.Tags.DefineBitsJPEG2) //Jpeg with included jpeg table { byte[] data = reader.ReadBytes((int)record.TagLength); MemoryStream stream = new MemoryStream(data); bmp = new Bitmap(stream); stream.Close(); } else if (record.Tag == Flash.Tags.DefineBitsJPEG3) //Jpeg with alpha { uint alphaDataOffset = reader.ReadUInt32(); byte[] data = reader.ReadBytes((int)alphaDataOffset); MemoryStream stream = new MemoryStream(data); bmp = new Bitmap(stream); stream.Close(); byte[] alphaDataZCompressed = reader.ReadBytes((int)reader.BytesToEnd); //TODO: unpack zlib compressed data } else { //ZLib-compressed bool UseAlpha = (record.Tag==Flash.Tags.DefineBitsLossless2?true:false); byte format = reader.ReadByte(); ushort width = reader.ReadUInt16(); ushort height = reader.ReadUInt16(); int stride = ((width+3)/4)*4; int numPaletteEntries = 0; long size = 0; int bpp = 1; int bytesPerPaletteEntry = 3; if (format==3) { numPaletteEntries = reader.ReadByte(); if (UseAlpha) bytesPerPaletteEntry = 4; size = stride*height + bytesPerPaletteEntry*numPaletteEntries; } else { if (format==4) bpp = 2; else if (format==5) bpp = 3; size = bpp*width*height; } size+=248+1024; //Don't know why... byte[] compressed = reader.ReadBytes((int)reader.BytesToEnd); byte[] decompressed = null; //zlib.decompress(compressed); if (format==3) { Color[] palette = new Color[numPaletteEntries]; for (int i=0; i<numPaletteEntries;i++) { Color clr = Color.White; int ptr = i*bytesPerPaletteEntry; if (bytesPerPaletteEntry==3) clr = Color.FromArgb(decompressed[ptr],decompressed[ptr+1],decompressed[ptr+2]); else clr = Color.FromArgb(decompressed[ptr],decompressed[ptr+1],decompressed[ptr+2],decompressed[ptr+3]); palette[i] = clr; } int pixelPtr = numPaletteEntries*bytesPerPaletteEntry; bmp = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); //TODO: } else { //TODO: } } if (bmp!=null) { if (alphaData!=null) { //TODO: write to bmp's alpha channel } MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp); mb.Name = "Flash_"+this.Id.ToString(); } this.InitDone(); }
public static Canvas Create(MemberSpriteBitmap mb) { return(mb.Canvas); //return Canvas.Create(mb.PixelDataProvider); }
public void Init() { this.UIParentSprite = new Sprite(); this.UIParentSprite.Parent = this.m_sp.Parent; this.UIParentSprite.Name = "Transformer"; this.moveSprite = new Sprite(); this.moveSprite.Parent = this.UIParentSprite; this.moveSprite.LocZ = 999; this.moveSprite.Name = "Move"; this.moveSprite.MouseActive = true; this.moveSprite.MouseEvent += new Endogine.Sprite.MouseEventDelegate(moveSprite_MouseEvent); this.moveSprite.Cursor = System.Windows.Forms.Cursors.SizeAll; this.m_aSprites.Add(this.moveSprite); this.rotateSprite = new Sprite(); this.rotateSprite.Parent = this.UIParentSprite; this.rotateSprite.LocZ = 998; this.rotateSprite.Name = "Rotate"; this.rotateSprite.MouseActive = true; this.rotateSprite.MouseEvent += new Endogine.Sprite.MouseEventDelegate(rotateSprite_MouseEvent); this.rotateSprite.Cursor = System.Windows.Forms.Cursors.Hand; this.m_aSprites.Add(this.rotateSprite); Bitmap bmpCross = new Bitmap(8, 8, PixelFormat.Format24bppRgb); Graphics g = Graphics.FromImage(bmpCross); Pen pen = new Pen(System.Drawing.Color.Gray); g.DrawRectangle(pen, 0, 0, bmpCross.Width, bmpCross.Height); g.DrawLine(pen, bmpCross.Width / 2, 0, bmpCross.Width / 2, bmpCross.Height); g.DrawLine(pen, 0, bmpCross.Height / 2, bmpCross.Width, bmpCross.Height / 2); MemberSpriteBitmap mb = new MemberSpriteBitmap(bmpCross); mb.CenterRegPoint(); this.pivotSprite = new Sprite(); this.pivotSprite.Parent = this.UIParentSprite; this.pivotSprite.Name = "Pivot"; this.pivotSprite.Member = mb; this.pivotSprite.LocZ = 1002; this.pivotSprite.MouseActive = true; this.pivotSprite.MouseEvent += new Endogine.Sprite.MouseEventDelegate(pivotSprite_MouseEvent); this.pivotSprite.Cursor = System.Windows.Forms.Cursors.NoMove2D; this.m_aSprites.Add(this.pivotSprite); //8 squares for resizing: Bitmap bmpSquare = new Bitmap(8, 8, PixelFormat.Format24bppRgb); g = Graphics.FromImage(bmpSquare); //g.DrawRectangle(new Pen(Color.Gray), 0,0,bmpSquare.Width, bmpSquare.Height); g.FillRectangle(new SolidBrush(System.Drawing.Color.Gray), 0, 0, bmpSquare.Width, bmpSquare.Height); mb = new MemberSpriteBitmap(bmpSquare); mb.CenterRegPoint(); resizeSquares = new ArrayList(); for (int y = 0; y < 3; y++) { for (int x = 0; x < 3; x++) { if (x == 1 && y == 1) { continue; } Sprite spSquare = new Sprite(); //spSquare.Parent = this.m_sp; spSquare.Parent = this.UIParentSprite; spSquare.Name = "Size"; spSquare.Member = mb; resizeSquares.Add(spSquare); spSquare.Tag = new EPoint(x, y); spSquare.LocZ = 1000; spSquare.Ink = RasterOps.ROPs.BgTransparent; spSquare.MouseActive = true; spSquare.MouseEvent += new Endogine.Sprite.MouseEventDelegate(spSquare_MouseEvent); this.m_aSprites.Add(spSquare); } } ((Sprite)resizeSquares[0]).Cursor = System.Windows.Forms.Cursors.SizeNWSE; ((Sprite)resizeSquares[7]).Cursor = System.Windows.Forms.Cursors.SizeNWSE; ((Sprite)resizeSquares[2]).Cursor = System.Windows.Forms.Cursors.SizeNESW; ((Sprite)resizeSquares[5]).Cursor = System.Windows.Forms.Cursors.SizeNESW; ((Sprite)resizeSquares[1]).Cursor = System.Windows.Forms.Cursors.SizeNS; ((Sprite)resizeSquares[6]).Cursor = System.Windows.Forms.Cursors.SizeNS; ((Sprite)resizeSquares[3]).Cursor = System.Windows.Forms.Cursors.SizeWE; ((Sprite)resizeSquares[4]).Cursor = System.Windows.Forms.Cursors.SizeWE; this.Update(); }
public static Dictionary<char, int[, ]> CreatePicRefs(Font font, string characters, List<object> pensAndBrushes) { Bitmap[] bitmaps = FontGenerator.Generate(font, characters, pensAndBrushes); ERectangle[] rects; EPoint[] offsets; Bitmap bmpLarge = Endogine.BitmapHelpers.TexturePacking.TreePack(bitmaps, out rects, out offsets); //.PackBitmapsIntoOneLarge(trimmedBmps, null, out node); Dictionary<char, int[,]> profiles = new Dictionary<char, int[,]>(); for (int i=0; i<bitmaps.Length; i++) { Bitmap bmp = bitmaps[i]; int[,] profile = GetProfile(bmp); profiles.Add(characters[i], profile); } MemberSpriteBitmap mb = new MemberSpriteBitmap(bmpLarge); string name = GetPrefix(font); mb.Name = name; string[] names = new string[characters.Length]; for (int i=0; i<characters.Length;i++) names[i] = ((int)characters[i]).ToString(); //bmpLarge.Save("_fonttest.png"); //Endogine.BitmapHelpers.TexturePacking.CreateDocFromRectsAndOffsets(rects, offsets, names).Save("_fonttest.xml"); for (int i=0; i<bitmaps.Length; i++) { PicRef pic = new PicRef(name+"_"+characters.Substring(i,1), mb); pic.Offset = new EPoint(0,offsets[i].Y); //Ignore the X offset pic.SourceRectangle = rects[i]; //EH.Instance.CastLib.Pictures.AddPicture(pic); } return profiles; }
private void PlayerBall_MouseEvent(Sprite sender, System.Windows.Forms.MouseEventArgs e, MouseEventType t) { if (t == Sprite.MouseEventType.Down) { forceMarker.Visible = true; } else if (t == Sprite.MouseEventType.StillDown) { MemberSpriteBitmap mb = forceMarker.Member; if (mb != null) { mb.Dispose(); } //this.MouseDownLoc.X, this.MouseDownLoc.Y ERectangleF rctLine = ERectangleF.FromLTRB(this.Loc.X, this.Loc.Y, this.MouseLastLoc.X, this.MouseLastLoc.Y); forceVector = rctLine.Size; if (rctLine.Width != 0 && rctLine.Height != 0) { Bitmap bmp = new Bitmap((int)Math.Abs(rctLine.Width) + 1, (int)Math.Abs(rctLine.Height) + 1, System.Drawing.Imaging.PixelFormat.Format24bppRgb); Graphics g = Graphics.FromImage(bmp); ERectangleF rctOrigo = rctLine.Copy(); rctOrigo.MakeTopLeftAtOrigo(); Pen pen = new Pen(Color.Red, 2); g.DrawLine(pen, rctOrigo.X, rctOrigo.Y, rctOrigo.X + rctOrigo.Width, rctOrigo.Y + rctOrigo.Height); g.Dispose(); EPointF locOffset = new EPointF(); if (rctOrigo.Width < 0) { locOffset.X = rctOrigo.Width; } if (rctOrigo.Height < 0) { locOffset.Y = rctOrigo.Height; } mb = new MemberSpriteBitmap(bmp); forceMarker.Member = mb; forceMarker.Loc = this.Loc + locOffset; } else { forceMarker.Member = null; } } else if (t == Sprite.MouseEventType.UpOutside || t == Sprite.MouseEventType.Click) { this.Velocity = forceVector * -0.1f; forceMarker.Visible = false; MemberSpriteBitmap mb = forceMarker.Member; if (mb != null) { forceMarker.Member = null; mb.Dispose(); } } }
public MemberSpriteBitmap CreateAsMember(int nTwipSize) { Bitmap bmp = this.RenderToBitmap(nTwipSize); if (bmp==null) return null; MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp); mb.Name = "Flash_"+this.Id.ToString(); mb.RegPoint = this.Bounds.Location*-1; //.ToEPoint() return mb; }
private void CreateNewTiles(int a_nLocX) { //use perlin noise to generate wall structure ArrayList aNoise = new ArrayList(); for (int x = 0; x < m_nTileWidth; x++) { aNoise.Add(0f); } m_noise.Offset = new EPointF(a_nLocX, 0); m_noise.FillArray(aNoise); PointF[] aPoints1 = new PointF[m_nTileWidth]; PointF[] aPoints2 = new PointF[m_nTileWidth]; for (int x = 0; x < m_nTileWidth; x++) { m_fCaveHeight *= 0.9997f; float fAllowedY = m_rctPlayArea.Height - m_fCaveHeight; m_fMidY = ((float)aNoise[x]) * fAllowedY; float[] yPair = new float[] { m_fMidY, m_fMidY + m_fCaveHeight }; aPoints1[x] = new PointF(x, yPair[0]); aPoints2[x] = new PointF(x, yPair[1]); m_locYPairs.Add(x + a_nLocX, yPair); } ArrayList aBothTileLines = new ArrayList(); aBothTileLines.Add(new TileLines(aPoints1)); aBothTileLines.Add(new TileLines(aPoints2)); for (int i = 0; i < 2; i++) { TileLines tileLines = (TileLines)aBothTileLines[i]; Bitmap bmp; Graphics g; float fYDiff = tileLines.MaxY - tileLines.MinY + 1; bmp = new Bitmap(m_nTileWidth, (int)fYDiff); g = Graphics.FromImage(bmp); g.FillRectangle(new SolidBrush(Color.Black), 0, 0, bmp.Width, bmp.Height); //g.DrawLines(new Pen(Color.White, 2), tileLines.Points); //create polygon from lines: PointF[] polygon = tileLines.GetPolygon(i == 1); g.FillPolygon(new SolidBrush(Color.White), polygon); g.Dispose(); MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp); Sprite sp = new Sprite(); sp.Member = mb; sp.LocX = a_nLocX; sp.LocY = tileLines.MinY; if (i == 0) { sp.Name = "Ceiling"; } else { sp.Name = "Floor"; } BhReportWhenOutside bh = new BhReportWhenOutside(); sp.AddBehavior(bh); bh.Outside += new CaveHunter.BhReportWhenOutside.OutsideDelegate(bh_Outside); m_wallSprites.Add(sp); Sprite spFill = new Sprite(); spFill.MemberName = "BG1"; if (i == 0) { spFill.Rect = new ERectangleF(sp.LocX, m_rctPlayArea.Top, this.m_nTileWidth, sp.Rect.Top); } else { spFill.Rect = new ERectangleF(sp.LocX, sp.Rect.Bottom, this.m_nTileWidth, m_rctPlayArea.Bottom - sp.Rect.Bottom); } bh = new BhReportWhenOutside(); spFill.AddBehavior(bh); bh.Outside += new CaveHunter.BhReportWhenOutside.OutsideDelegate(bh_Outside); m_wallSprites.Add(spFill); } }
public override void Init(Record record) { base.Init(record); BinaryFlashReader reader = record.GetDataReader(); this.Id = reader.ReadUInt16(); Bitmap bmp = null; byte[] alphaData = null; if (record.Tag == Flash.Tags.DefineBits) //Jpeg with separate jpeg table { ushort start = reader.ReadUInt16(); if (start != 0xd8ff) { throw new Exception("JPEG start error"); } MemoryStream stream = new MemoryStream(); BinaryWriter writer = new BinaryWriter(stream); writer.Write(this._jpegTables); writer.Write(reader.ReadBytes((int)record.TagLength)); this._jpegTables = null; writer.Close(); stream.Close(); byte[] data = stream.ToArray(); stream = new MemoryStream(data); bmp = new Bitmap(stream); stream.Close(); } else if (record.Tag == Flash.Tags.DefineBitsJPEG2) //Jpeg with included jpeg table { byte[] data = reader.ReadBytes((int)record.TagLength); MemoryStream stream = new MemoryStream(data); bmp = new Bitmap(stream); stream.Close(); } else if (record.Tag == Flash.Tags.DefineBitsJPEG3) //Jpeg with alpha { uint alphaDataOffset = reader.ReadUInt32(); byte[] data = reader.ReadBytes((int)alphaDataOffset); MemoryStream stream = new MemoryStream(data); bmp = new Bitmap(stream); stream.Close(); byte[] alphaDataZCompressed = reader.ReadBytes((int)reader.BytesToEnd); //TODO: unpack zlib compressed data } else { //ZLib-compressed bool UseAlpha = (record.Tag == Flash.Tags.DefineBitsLossless2?true:false); byte format = reader.ReadByte(); ushort width = reader.ReadUInt16(); ushort height = reader.ReadUInt16(); int stride = ((width + 3) / 4) * 4; int numPaletteEntries = 0; long size = 0; int bpp = 1; int bytesPerPaletteEntry = 3; if (format == 3) { numPaletteEntries = reader.ReadByte(); if (UseAlpha) { bytesPerPaletteEntry = 4; } size = stride * height + bytesPerPaletteEntry * numPaletteEntries; } else { if (format == 4) { bpp = 2; } else if (format == 5) { bpp = 3; } size = bpp * width * height; } size += 248 + 1024; //Don't know why... byte[] compressed = reader.ReadBytes((int)reader.BytesToEnd); byte[] decompressed = null; //zlib.decompress(compressed); if (format == 3) { Color[] palette = new Color[numPaletteEntries]; for (int i = 0; i < numPaletteEntries; i++) { Color clr = Color.White; int ptr = i * bytesPerPaletteEntry; if (bytesPerPaletteEntry == 3) { clr = Color.FromArgb(decompressed[ptr], decompressed[ptr + 1], decompressed[ptr + 2]); } else { clr = Color.FromArgb(decompressed[ptr], decompressed[ptr + 1], decompressed[ptr + 2], decompressed[ptr + 3]); } palette[i] = clr; } int pixelPtr = numPaletteEntries * bytesPerPaletteEntry; bmp = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); //TODO: } else { //TODO: } } if (bmp != null) { if (alphaData != null) { //TODO: write to bmp's alpha channel } MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp); mb.Name = "Flash_" + this.Id.ToString(); } this.InitDone(); }
public Sprite Execute(Flash player, Sprite spExistingSprite) { if (spExistingSprite == null) { Sprite sp = new Sprite(); sp.TextureFilter = Sprite.TextureFilters.High; sp.LocZ = this.Depth; sp.Ink = RasterOps.ROPs.BgTransparent; //sp.Visible = false; spExistingSprite = sp; //EH.Put("New sprite"); } ushort characterId = this.CharacterId; if (this.CharacterId > 0) this.Owner.CharacterIdsByDepth[this.Depth] = this.CharacterId; else characterId = (ushort)this.Owner.CharacterIdsByDepth[this.Depth]; object character = this.Owner.Characters[characterId]; //EH.Put("Depth: "+this.Depth.ToString()); if (character==null) { throw new Exception("Error - no character. Id: " + characterId.ToString()); } //EH.Put("Char: "+character.GetType().ToString() + " "+characterId.ToString()); if (this.Matrix!=null) { spExistingSprite.Loc = new EPointF(this.Matrix.Tx, this.Matrix.Ty); ///player.TwipSize; spExistingSprite.Scaling = new EPointF(this.Matrix.A, this.Matrix.D)/65535; //EH.Put("Loc: "+spExistingSprite.Loc.ToString() + " Sc: "+spExistingSprite.Scaling.ToString()); //TODO: rotation etc } MemberSpriteBitmap mb = null; if (character!=null) { if (character is Shape.MorphShape) { //EH.Put("Ratio:"+this.Ratio); Shape.MorphShape ms = (Shape.MorphShape)character; EPoint ptOffset; string sOut = "MS"+ms.Id.ToString()+"-"+this.Ratio.ToString().PadLeft(5,'0')+"d"+this.Depth; // if (this.Ratio == 0) // { // System.Collections.ArrayList morphed = ms.CreateMorphedShape((float)this.Ratio/65535); // string s = ms.WriteCommands(morphed); // Endogine.Files.FileReadWrite.Write(sOut+".txt", s); // // Shape.MorphShape.Debug = false; // if (this.Depth == 6) // Shape.MorphShape.Debug = true; // } Bitmap bmp = ms.RenderToBitmap(this.Owner.TwipSize, (float)this.Ratio/65535, out ptOffset); if (bmp==null) return null; mb = new MemberSpriteBitmap(bmp); mb.RegPoint = ptOffset*-1; //bmp.Save(sOut+".png"); //mb.RegPoint = this.Bounds.Location*-1; //.ToEPoint() } else if (character is Shape.Shape) { Shape.Shape shape = (Shape.Shape)character; mb = (MemberSpriteBitmap)this.Owner.Members[shape.Id]; if (mb == null) { // Bitmap bmp = shape.RenderToBitmap(this.Owner.TwipSize); // bmp.Save("S"+shape.Id+"d"+this.Depth+".png"); // // string s = shape.WriteCommands(shape.CommandList); // Endogine.Files.FileReadWrite.Write("S0d"+this.Depth+".txt", s); mb = shape.CreateAsMember(this.Owner.TwipSize); if (mb!=null) mb.Name = "Flash_"+shape.Id.ToString(); this.Owner.Members[shape.Id] = mb; } } } if (mb==null) mb = (MemberSpriteBitmap)EH.Instance.CastLib.GetByName("BallGreen"); spExistingSprite.Member = mb; return spExistingSprite; }
private void CalcSourceRects() { MemberSpriteBitmap mb = this.Member; this._cuttingRectPixels = ERectangle.FromLTRB( (int)(this._cuttingRectFract.Left * mb.Size.X), (int)(this._cuttingRectFract.Top * mb.Size.Y), (int)(this._cuttingRectFract.Right * mb.Size.X), (int)(this._cuttingRectFract.Bottom * mb.Size.Y)); if (this._cuttingRectFract.Width > 0.001f && this._cuttingRectPixels.Width == 0) { this._cuttingRectPixels.Width++; } if (this._cuttingRectFract.Height > 0.001f && this._cuttingRectPixels.Height == 0) { this._cuttingRectPixels.Height++; } ERectangleF[,] rects = this.CreateRectanglesFromCuttingRect(this._cuttingRectPixels.ToERectangleF(), this.Member.Size.ToEPointF()); this._midSection = rects[1, 1].ToERectangle(); for (int x = 0; x < 3; x++) { for (int y = 0; y < 3; y++) { ERectangleF rct = rects[x, y]; if (rct.Width == 0 || rct.Height == 0) { if (this._spriteArray[x, y] != null) { this._spriteArray[x, y].Dispose(); this._spriteArray[x, y] = null; } } else { Sprite sp = this._spriteArray[x, y]; if (sp == null) { sp = new Sprite(); sp.Parent = this; sp.Name = x.ToString() + ";" + y.ToString(); this._spriteArray[x, y] = sp; } sp.Member = this.Member; sp.SourceRect = rct.ToERectangle(); sp.RegPoint = sp.SourceRect.Location; } } } this.m_aSprites.Clear(); for (int x = 0; x < 3; x++) { for (int y = 0; y < 3; y++) { if (this._spriteArray[x, y] != null) { this.m_aSprites.Add(this._spriteArray[x, y]); } } } }
private Sprite CreateSpriteWithMemberAndAxis(MemberSpriteBitmap mb, string axis) { Sprite sp = new Sprite(); sp.Name = axis; sp.Parent = this.m_sp; sp.Member = mb; sp.LocZ = 1000; m_aSprites.Add(sp); sp.MouseActive = true; sp.MouseEvent+=new Endogine.Sprite.MouseEventDelegate(sp_MouseEvent); return sp; }
public static Canvas Create(MemberSpriteBitmap mb) { return mb.Canvas; //return Canvas.Create(mb.PixelDataProvider); }
public void Init() { this.UIParentSprite = new Sprite(); this.UIParentSprite.Parent = this.m_sp.Parent; this.UIParentSprite.Name = "Transformer"; this.moveSprite = new Sprite(); this.moveSprite.Parent = this.UIParentSprite; this.moveSprite.LocZ = 999; this.moveSprite.Name = "Move"; this.moveSprite.MouseActive = true; this.moveSprite.MouseEvent+=new Endogine.Sprite.MouseEventDelegate(moveSprite_MouseEvent); this.moveSprite.Cursor = System.Windows.Forms.Cursors.SizeAll; this.m_aSprites.Add(this.moveSprite); this.rotateSprite = new Sprite(); this.rotateSprite.Parent = this.UIParentSprite; this.rotateSprite.LocZ = 998; this.rotateSprite.Name = "Rotate"; this.rotateSprite.MouseActive = true; this.rotateSprite.MouseEvent+=new Endogine.Sprite.MouseEventDelegate(rotateSprite_MouseEvent); this.rotateSprite.Cursor = System.Windows.Forms.Cursors.Hand; this.m_aSprites.Add(this.rotateSprite); Bitmap bmpCross = new Bitmap(8,8,PixelFormat.Format24bppRgb); Graphics g = Graphics.FromImage(bmpCross); Pen pen = new Pen(System.Drawing.Color.Gray); g.DrawRectangle(pen, 0,0,bmpCross.Width, bmpCross.Height); g.DrawLine(pen, bmpCross.Width/2,0,bmpCross.Width/2,bmpCross.Height); g.DrawLine(pen, 0,bmpCross.Height/2,bmpCross.Width,bmpCross.Height/2); MemberSpriteBitmap mb = new MemberSpriteBitmap(bmpCross); mb.CenterRegPoint(); this.pivotSprite = new Sprite(); this.pivotSprite.Parent = this.UIParentSprite; this.pivotSprite.Name = "Pivot"; this.pivotSprite.Member = mb; this.pivotSprite.LocZ = 1002; this.pivotSprite.MouseActive = true; this.pivotSprite.MouseEvent+=new Endogine.Sprite.MouseEventDelegate(pivotSprite_MouseEvent); this.pivotSprite.Cursor = System.Windows.Forms.Cursors.NoMove2D; this.m_aSprites.Add(this.pivotSprite); //8 squares for resizing: Bitmap bmpSquare = new Bitmap(8,8,PixelFormat.Format24bppRgb); g = Graphics.FromImage(bmpSquare); //g.DrawRectangle(new Pen(Color.Gray), 0,0,bmpSquare.Width, bmpSquare.Height); g.FillRectangle(new SolidBrush(System.Drawing.Color.Gray), 0, 0, bmpSquare.Width, bmpSquare.Height); mb = new MemberSpriteBitmap(bmpSquare); mb.CenterRegPoint(); resizeSquares = new ArrayList(); for (int y = 0; y < 3; y++) { for (int x = 0; x < 3; x++) { if (x == 1 && y == 1) continue; Sprite spSquare = new Sprite(); //spSquare.Parent = this.m_sp; spSquare.Parent = this.UIParentSprite; spSquare.Name = "Size"; spSquare.Member = mb; resizeSquares.Add(spSquare); spSquare.Tag = new EPoint(x,y); spSquare.LocZ = 1000; spSquare.Ink = RasterOps.ROPs.BgTransparent; spSquare.MouseActive = true; spSquare.MouseEvent+=new Endogine.Sprite.MouseEventDelegate(spSquare_MouseEvent); this.m_aSprites.Add(spSquare); } } ((Sprite)resizeSquares[0]).Cursor = System.Windows.Forms.Cursors.SizeNWSE; ((Sprite)resizeSquares[7]).Cursor = System.Windows.Forms.Cursors.SizeNWSE; ((Sprite)resizeSquares[2]).Cursor = System.Windows.Forms.Cursors.SizeNESW; ((Sprite)resizeSquares[5]).Cursor = System.Windows.Forms.Cursors.SizeNESW; ((Sprite)resizeSquares[1]).Cursor = System.Windows.Forms.Cursors.SizeNS; ((Sprite)resizeSquares[6]).Cursor = System.Windows.Forms.Cursors.SizeNS; ((Sprite)resizeSquares[3]).Cursor = System.Windows.Forms.Cursors.SizeWE; ((Sprite)resizeSquares[4]).Cursor = System.Windows.Forms.Cursors.SizeWE; this.Update(); }