コード例 #1
0
ファイル: ImageBox.cs プロジェクト: Babelz/Fracture
        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);
            }
        }
コード例 #2
0
ファイル: Checkbox.cs プロジェクト: Babelz/Fracture
        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);
        }