重新绘制画布时保持颜色。?

时间:2012-12-05 22:11:17

标签: c# wpf canvas colors repaint

这是我的代码:

public void Repaint() {
        canvas1.Children.Clear();
        ObservableCollection<ClassBox> classes = viewModel.Classes;
        foreach (ClassBox j in classes) {
            // connect our ui element to the mouse handler if not done already
            if (!j.MouseActive) {
                j.Box.PreviewMouseLeftButtonUp += Handle_MouseUp;
                j.Box.PreviewMouseLeftButtonDown += Handle_MouseDown;
                j.Box.PreviewMouseMove += Handle_MouseMove;
                j.MouseActive = true;
                // Heres should the code be written (something like :)
                // j.Box.SetColor(Change_Color(value));
            }
            canvas1.Children.Add(j.Box);
       } }

因此,上面的代码展示了在调用方法时如何重新绘制框。 工作正常,但现在代码的下一部分:

 private void Change_ColourBox(object sender, System.Windows.RoutedEventArgs e)
    {
        var element = sender as FrameworkElement;
        ObservableCollection<ClassBox> classes = viewModel.Classes;
        foreach (ClassBox j in classes)
        {
            // connect our ui element to the mouse handler if not done already
            if (sender == BoxStandard)
            {
                j.Box.Background = new SolidColorBrush(Colors.White);
                j.Box.Foreground = new SolidColorBrush(Colors.Black);
                Repaint();
            } }

此代码告诉我们在按下按钮"Change_Color"时应该更改颜色。 我已经在XAML中实现了按钮,我给它们命名了,在这种情况下是"BoxStandard"

下一个代码snipp是我通过事件处理程序生成框的地方。

 private void Spawn_Box(object sender, System.Windows.RoutedEventArgs e) {
      viewModel.GetURController.AddAndExecute(new AddClassCommand(viewModel));
    }

我要把它排成一行:我给他们开始的元素提供了预定义的颜色。当我通过点击事件“Change_Color”更改颜色时,它们会更改为所需的颜色。但是当我然后以预定义的颜色将新元素生成到画布时。我想用改变的颜色来产生它。

问你是否理解我可以解释的问题!

  • ClassBox是一个由框的属性组成的对象。重绘不仅用于前景/背景颜色,还计算盒子定位的差异

0 个答案:

没有答案