protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { if (image != null) { if (sizeMode == SizeMode.Normal) { renderer.Draw(image, rect.X, rect.Y, sourceRect, Color); } else if (sizeMode == SizeMode.Auto) { renderer.Draw(image, rect.X, rect.Y, sourceRect, Color); } else if (sizeMode == SizeMode.Stretched) { renderer.Draw(image, rect, sourceRect, Color); } else if (sizeMode == SizeMode.Centered) { var x = (rect.Width / 2) - (image.Width / 2); var y = (rect.Height / 2) - (image.Height / 2); renderer.Draw(image, x, y, sourceRect, Color); } else if (sizeMode == SizeMode.Tiled) { renderer.DrawTileTexture(image, rect, Color); } } }
public override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { if (image != null) { if (sizeMode == SizeMode.Normal) { renderer.Draw(image, rect.X, rect.Y, sourceRect, Color); } else if (sizeMode == SizeMode.Auto) { renderer.Draw(image, rect.X, rect.Y, sourceRect, Color); } else if (sizeMode == SizeMode.Stretched) { renderer.Draw(image, rect, sourceRect, Color); } else if (sizeMode == SizeMode.Fit) { float widthScale = Width / (float)image.Width; float heightScale = Height / (float)image.Height; float scale = MathHelper.Clamp((float)Math.Min(widthScale, heightScale), 0f, 1f); rect.Width = (int)Math.Round((image.Width * scale)); rect.Height = (int)Math.Round((image.Height * scale)); rect.Y = rect.Y + ((this.Height - rect.Height) / 2); rect.X = rect.X + ((this.Width - rect.Width) / 2); renderer.Draw(image, rect, sourceRect, Color); } else if (sizeMode == SizeMode.Centered) { int x = rect.X + (rect.Width / 2) - (image.Width / 2); int y = rect.Y + (rect.Height / 2) - (image.Height / 2); renderer.Draw(image, x, y, sourceRect, Color); } else if (sizeMode == SizeMode.Tiled) { renderer.DrawTileTexture(image, rect, Color); } } }