Newer
Older
Qwilight / Qwilight / View / AvatarDateView.xaml.cs
@Taehui Taehui on 1 Mar 1 KB 2024-03-02 오전 2:09
using Qwilight.ViewModel;
using System.Windows.Media;

namespace Qwilight.View
{
    public partial class AvatarDateView
    {
        readonly DrawingGroup _target = new();

        public AvatarDateView()
        {
            InitializeComponent();
            IsVisibleChanged += (sender, e) =>
            {
                if ((bool)e.NewValue)
                {
                    WPF.Paint += OnPaint;
                }
                else
                {
                    WPF.Paint -= OnPaint;
                }
            };
        }

        void OnPaint(object sender, object e)
        {
            var viewHeight = RenderSize.Height;
            var dateValues = ViewModels.Instance.AvatarValue.DateValues;
            var dateValuesLength = dateValues.Length;
            var dateValueLength = RenderSize.Width / dateValuesLength;
            var highestDateValue = dateValues.Max();

            using var targetSession = _target.Open();
            for (var i = dateValuesLength - 1; i >= 0; --i)
            {
                targetSession.DrawRectangle(Paints.Paint4, null, new Bound(dateValueLength * i, viewHeight * (highestDateValue - dateValues[i]) / highestDateValue, dateValueLength, viewHeight * dateValues[i] / highestDateValue));
            }
        }

        protected override void OnRender(DrawingContext dc)
        {
            base.OnRender(dc);
            dc.DrawDrawing(_target);
        }
    }
}