protected virtual void Tick() { if (_brush == null) { return; } var width = _brush.Cells.Length; var height = _brush.Cells[0].Length; for (var x = 0; x < width; x++) { for (var y = 0; y < height; y++) { var cell = _brush.Cells[x][y]; var image = this._images[x * height + y]; var location = cell.tile.Sprite.CurrentFrame.SheetLocation; var source = SpriteBitmapCache.GetOrLoadFrame(cell.tile.Sprite.SheetPath.Absolute, location); source = SpriteBitmapCache.Scale(source, Zoom); image.Source = source; image.InvalidateVisual(); } } }
public override WriteableBitmap GetImageSource(double zoom) { var scaledOverlay = SpriteBitmapCache.Scale(_overlay, zoom); var spriteImg = BitmapFactory.ConvertToPbgra32Format(base.GetImageSource(zoom)); var centerX = (spriteImg.Width - scaledOverlay.Width) / 2; var centerY = (spriteImg.Height - scaledOverlay.Height) / 2; var destRect = new System.Windows.Rect(centerX, centerY, scaledOverlay.Width, scaledOverlay.Height); spriteImg.Blit(destRect, scaledOverlay, new System.Windows.Rect(0, 0, scaledOverlay.Width, scaledOverlay.Height)); return(spriteImg); }
public virtual WriteableBitmap GetImageSource(double zoom) { var location = _sprite.CurrentFrame.SheetLocation; var image = SpriteBitmapCache.GetOrLoadFrame(_sprite.SheetPath.Absolute, location); if (zoom != 1) { image = SpriteBitmapCache.Scale(image, zoom); } return(image); }
protected override void OnRender(DrawingContext dc) { base.OnRender(dc); var image = SpriteBitmapCache.GetOrLoadFrame(_playerSprite.SheetPath.Absolute, _playerSprite.CurrentFrame.SheetLocation); image = SpriteBitmapCache.Scale(image, this.Zoom); if (Screen.Name == Screen.Stage.StartScreen) { var p = Screen.Stage.StartPoint; dc.DrawImage(image, new System.Windows.Rect(Zoom * (p.X - _playerSprite.HotSpot.X), Zoom * (p.Y - _playerSprite.HotSpot.Y), image.PixelWidth, image.PixelHeight)); } if (Screen.Stage.ContinuePoints.ContainsKey(Screen.Name)) { var p = Screen.Stage.ContinuePoints[Screen.Name]; dc.DrawImage(image, new System.Windows.Rect(Zoom * (p.X - _playerSprite.HotSpot.X), Zoom * (p.Y - _playerSprite.HotSpot.Y), image.PixelWidth, image.PixelHeight)); } }