Я работаю над проектом с 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, но я не знаю, как его изменить.
Большое спасибо
РЕДАКТИРОВАТЬ: Окей, я решил проблему с совершенно другим решением.