WPF CanFreeze Freeze IsFrozen

Freezable—The base class for objects that can be “frozen” into a read-only state for performance reasons. Freezables, once frozen, can be safely shared among multiple threads, unlike all other DispatcherObjects. Frozen objects can never be unfrozen,but you can clone them to create unfrozen copies. Most Freezables are graphics primitives such as brushes, pens, and geometries or animation classes.

 

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp281
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        Grid grid { get; set; }
        SolidColorBrush bgBrush { get; set; }

        public MainWindow()
        {
            InitializeComponent();
            GridBackgroundFreezeUnFreeze();
        }

        
        private void GridBackgroundFreezeUnFreeze()
        {
            grid = new Grid();
            grid.ToolTip = "Brush CanFreze Freeze IsFrozen Clone";
            bgBrush = new SolidColorBrush(Colors.Red);
            if(bgBrush.CanFreeze)
            {
                bgBrush.Freeze();
            }
            grid.Background= bgBrush;
            this.Content = grid;
        }

        private void Window_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if(bgBrush.IsFrozen)
            {
                SolidColorBrush blueBrush = bgBrush.Clone();
                blueBrush.Color = Colors.Blue;
                grid.Background= blueBrush;

            }
            else
            {
                grid.Background = new SolidColorBrush(Colors.Blue);
            }
        }
    }
}
复制代码

 

 

posted @   FredGrit  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示