Я не уверен, где создавать объекты SolidColorBrush. Должны ли они идти а) внутри общедоступного метода инициализации MainWindow (), б) непосредственно в классе MainWindow или в) другим новым методом?
Несколько объектов Ellipse создаются в общедоступной MainWindow (), и SetEllipsePosition не имеет проблем с доступом к ним (может быть, потому, что Ellipses передаются как аргумент?). Однако объекты SolidColorBrush, созданные в общедоступной функции MainWindow (), не отображаются в SetEllipsePosition ().
Когда я создаю эти объекты непосредственно в классе (после 'Kinect Runtime'), SetEllipsePosition () видит их. Но разве это плохой стиль?
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Ellipse headEllipse = new Ellipse();
Ellipse leftEllipse = new Ellipse();
Ellipse rightEllipse = new Ellipse();
SolidColorBrush greenBrush = new SolidColorBrush(Colors.Green); // where should these
SolidColorBrush redBrush = new SolidColorBrush(Colors.Red); // objects be defined?
SolidColorBrush orangeBrush = new SolidColorBrush(Colors.Orange);
SolidColorBrush yellowBrush = new SolidColorBrush(Colors.Yellow);
}
//Kinect Runtime
Runtime nui = new Runtime();
private void SetEllipsePosition(FrameworkElement ellipse, Joint joint)
{
...
(ellipse as Ellipse).Fill = greenBrush;
MainCanvas.Background = orangeBrush;
...
}
}