WPF的類庫現在鎖死不讓繼承實現自定義的Brush,因為基類的brush含有抽象而且是internal的一些函數,像internal abstract System.Windows.Media.Composition.DUCE.ResourceHandle AddRefOnChannelCore(System.Windows.Media.Composition.DUCE.Channel channel),就沒法繼承實現,而且一般的DrawingBrush, ImageBrush都是sealed。而我這次需要一個相當於2維的GradIEntBrush一樣的東西來實現傳入一個顏色矩陣,畫出一副ColorMap的東西。因為直接從brush繼承設置想直接從imagesource繼承都不可能,只好用MarkupExtension的方法繞:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Markup;
using System.Windows.Media.Imaging;
using System.Windows.Media;
using System.Windows;
using System.Windows.Media.Animation;
using System.ComponentModel;
[MarkupExtensionReturnType(typeof(Brush))]
class BilinearGradIEntBrushExtension:MarkupExtension,INotifyPropertyChanged
{
List<Color> colorMatrix = new List