Kinect - изменение размера шрифта в зависимости от расстояния пользователя от датчика kinect. - PullRequest
0 голосов
/ 01 апреля 2019

Я работаю над проектом с Kinect, и мне нужно изменить размер текста в зависимости от расстояния пользователя от датчика Kinect.Это означает, что если пользователь приблизится к датчику, размер шрифта текста станет меньше.И впоследствии, если пользователь отойдет от датчика, размер шрифта увеличится.

Так что я нашел этот код где-то в Интернете, и это именно то, что мне нужно.По крайней мере, я надеюсь, что это то, что мне нужно.Мне не удалось заставить его работать:

 private void Reader_FrameArrived(object sender, BodyFrameArrivedEventArgs e)
    {
        bool dataReceived = false;

        using (BodyFrame bodyFrame = e.FrameReference.AcquireFrame())
        {
            if (bodyFrame != null)
            {
                if (bodies == null)
                {
                    bodies = new Body[bodyFrame.BodyCount];
                }

                bodyFrame.GetAndRefreshBodyData(bodies);
                dataReceived = true;
            }
        }
        if (dataReceived)
        {
            var trackedMe = bodies.Where(bodies => bodies.IsTracked).FirstOrDefault(); //added using System.Linq; because of Where
            if (trackedMe == null) return;

            IReadOnlyDictionary<JointType, Joint> joints = trackedMe.Joints;
            var head = joints[JointType.Head];
            if (head.TrackingState == TrackingState.Tracked)
            {
                var position = head.Position;
                //MeDistance = position.Z.ToString();
                double dist = Math.Sqrt(position.X * position.X + position.Y * position.Y + position.Z * position.Z);
                dist.ToString();
                MyDistance = dist;
            }
        }
    }

    public string MeDistance
    {
        get
        {
            return meDistance;
        }

        set
        {
            if (meDistance != value)
            {
                meDistance = value;
                if (this.PropertyChanged != null)
                {
                    this.PropertyChanged(this, new PropertyChangedEventArgs("MeDistance"));
                    this.PropertyChanged(this, new PropertyChangedEventArgs("MyFontSize"));
                }
            }
        }
    }

    public int MyFontSize
    {
        get
        {
            float distance;
            var result = float.TryParse(MeDistance, out distance);                    
            if (result)
            {
                return (int)(distance * 20);
            }
            return 16;
        }
    }

Размер шрифта не меняется вообще, а постоянно 16. Я знаю, почему это 16, но я не знаю, как его изменить.

Большое спасибо

РЕДАКТИРОВАТЬ: Окей, я решил проблему с совершенно другим решением.

...