protected override void InternalDraw(IGraphicsFragment fragment, IGameEngineTime time) { if (Image == null) { return; } var destination = GetRenderDestinationRectangle(); var imageOffset = Style.Get <Vector2>($"{UiStyleKeys.Target.ImageBox}\\{UiStyleKeys.Offset.Normal}"); var imageWidth = (int)Math.Floor(destination.Width * imageOffset.X); var imageHeight = (int)Math.Floor(destination.Height * imageOffset.Y); var imageX = destination.X + imageWidth * (1.0f - imageOffset.X) * 0.5f; var imageY = destination.Y + imageHeight * (1.0f - imageOffset.Y) * 0.5f; switch (ImageMode) { case ImageMode.Fit: case ImageMode.Normal: fragment.DrawSprite(new Vector2(imageX, imageY), Vector2.One, 0.0f, Vector2.Zero, new Vector2(destination.Width, destination.Height), Image, ImageColor); break; case ImageMode.Source: fragment.DrawSprite(new Vector2(imageX, imageY), Vector2.One, 0.0f, Vector2.Zero, new Vector2(destination.Width, destination.Height), ImageSource == Rectangle.Empty ? Image.Bounds : ImageSource, Image, ImageColor); break; default: throw new InvalidOrUnsupportedException(nameof(ImageMode), ImageMode); } }
protected override void InternalDraw(IGraphicsFragment fragment, IGameEngineTime time) { var texture = Style.Get <Texture2D>($"{UiStyleKeys.Target.Checkbox}\\{(Checked? UiStyleKeys.Texture.Checked : UiStyleKeys.Texture.Unchecked)}"); var color = Style.Get <Color>($"{UiStyleKeys.Target.Checkbox}\\{(Enabled ? UiStyleKeys.Color.Enabled : UiStyleKeys.Color.Disabled)}"); var destination = GetRenderDestinationRectangle(); var position = new Vector2(destination.X, destination.Y); if (Mouse.IsHovering(this) && (Mouse.IsDown(MouseButton.Left) || Mouse.IsPressed(MouseButton.Left))) { var offset = Style.Get <Vector2>($"{UiStyleKeys.Target.Button}\\{UiStyleKeys.Offset.Click}"); position.X += (int)Math.Floor(offset.X); position.Y += (int)Math.Floor(offset.Y); } fragment.DrawSprite(position, Vector2.One, 0.0f, Vector2.Zero, new Vector2(destination.Width, destination.Height), texture, color); }