Для изменения цвета кисти в WPF можно использовать класс SolidColorBrush. Вам необходимо создать новый объект SolidColorBrush, передав в конструктор нужный цвет. Затем, установите эту кисть в свойство Stroke или Fill в зависимости от того, что вы хотите изменить цвет.
Вот пример кода, демонстрирующий, как изменить цвет кисти:
```csharp
SolidColorBrush brush = new SolidColorBrush(Colors.Red);
myBrushPicker.Fill = brush;
```
Чтобы отрисовать массив точек поля в зависимости от цвета в диапазоне от черного до белого, вы можете использовать значение цвета как альфа-канал в ARGB цветовой модели. Таким образом, вы можете указать прозрачность каждой точки в зависимости от ее цвета.
Вот пример кода, показывающий, как это можно реализовать:
```csharp
double minValue = 0.0; // Минимальное значение
double maxValue = 255.0; // Максимальное значение
for (int i = 0; i < fieldPoints.Length; i++)
{
Color color = Color.FromArgb(Convert.ToByte(fieldPoints[i].Value), Colors.Black);
SolidColorBrush brush = new SolidColorBrush(color);
// Используйте кисть для отрисовки точки
}
```
В данном примере, fieldPoints - это массив точек поля, где каждая точка представлена значением от 0 до 255. Более низкое значение означает более темный цвет, а более высокое значение - более светлый цвет.
Чтобы избежать создания новых объектов класса Brush каждый раз при изменении оттенка цвета, вы можете создать набор предварительно определенных кистей различных оттенков и повторно использовать их вместо создания новых объектов каждый раз. Например, вы можете создать словарь, где ключами являются значения оттенка цвета, а значениями - соответствующие кисти. Затем, вместо создания новой кисти, вы можете извлекать нужную из словаря.
Например:
```csharp
Dictionary<int, SolidColorBrush> brushes = new Dictionary<int, SolidColorBrush>();
// Создайте предварительно определенные кисти различных оттенков
brushes.Add(0, new SolidColorBrush(Colors.Black));
brushes.Add(128, new SolidColorBrush(Colors.Gray));
brushes.Add(255, new SolidColorBrush(Colors.White));
// Используйте кисти из словаря при изменении оттенка цвета
int shadeValue = 128; // Пример значения оттенка цвета
myBrushPicker.Fill = brushes[shadeValue];
```
Таким образом, при изменении оттенка цвета, вы можете просто извлечь нужную кисть из словаря без создания новых объектов класса Brush каждый раз.