我不确定在哪里创建SolidColorBrush对象。他们应该a)在公共MainWindow()初始化方法中,b)直接在MainWindow类中,或c)在另一个新方法中?
在公共MainWindow()中创建了一些Ellipse对象,并且SetEllipsePosition在访问它们时没有问题(可能因为省略号作为arg传入?)。但是,在公共MainWindow()中创建的SolidColorBrush对象对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;
...
}
}
答案 0 :(得分:0)
你无法访问画笔的原因是因为它们是在构造函数MainWindow中创建的,如果你只是类本身的private SolidColorBrush greenBrush;
然后在MainWindow()中添加一个像你现在这样的实例您将能够在SetEllipsePosition
中访问它。
答案 1 :(得分:0)
最好在类级别声明变量并在ctor中实例化它。在您的情况下,SolidColorBrush对象是ctor私有的。那么使用配偶是什么?