Яркость картплоттера (отображение динамических данных) C#

Я использую Microsoft Visual Studio 2010, включая эталонный динамический дисплей данных. Я хочу сделать полосу прокрутки, которая регулирует яркость карты. Я пытался найти такое свойство, как яркость или что-то подобное, но безуспешно. Спасибо за помощь друзья. :)


person RonYamin    schedule 18.10.2014    source источник


Ответы (1)


Вы можете управлять яркостью плоттера, устанавливая его Background на разные значения RGB. Каждое значение имеет диапазон от 0 (самый темный) до 255 (самый яркий). Сначала установите самый яркий цвет, например

Byte R = 255;
Byte G = 255;
Byte B = 255;

И определите коэффициент (диапазон от 0.5 до 1,0), который контролируется ползунком (0,0 — это полная чернота, поэтому я установил нижний диапазон как 0.5, что означает серый цвет).

double minFactor = 0.5;
double maxFactor = 1.0;
double factor = maxFactor; //initially, brightest

Затем Background плоттера

Color color = Color.FromRgb((Byte)(factor*R), (Byte)(factor*G), (Byte)(factor*B));
plotter.Background = new SolidColorBrush(color);

И вот как ползунок управляет яркостью.

Slider slider = new Slider();
slider.Value = factor;
slider.Maximum = maxFactor;
slider.Minimum = minFactor;
slider.ValueChanged += (s, e) =>
{
    var newFactor = e.NewValue;
    Color newColor = Color.FromRgb((Byte)(newFactor * R), (Byte)(newFactor * G), (Byte)(newFactor * B));
    plotter.Background = new SolidColorBrush(newColor);
};

Яркость карты

а. Установить темный фон для плоттера

plotter.Background = new SolidColorBrush(Colors.Black);

б. Скрыть сетку

plotter.AxisGrid.Visibility = System.Windows.Visibility.Collapsed;

в. Отрегулируйте непрозрачность карты с помощью ползунка

slider.ValueChanged += (s, e) =>
{
    var newFactor = e.NewValue;
    map.Opacity = newFactor;
    //Color newColor = Color.FromRgb((Byte)(newFactor * R), (Byte)(newFactor * G), (Byte)(newFactor * B));
    //plotter.Background = new SolidColorBrush(newColor);
}
person kennyzx    schedule 19.10.2014
comment
Я не работаю на карте, я не работаю только на простом графике. Я добавляю для вас Скриншот из моего приложения с facrot = 0.6 ... sizmedia.com /my.php?i=3mugmdn5r2ku.png - person RonYamin; 19.10.2014
comment
да... карта непрозрачна, поэтому на нее не влияет фон плоттера. Я думаю, вы можете добавить полупрозрачный серый слой поверх карты, мышь может щелкнуть через слой, чтобы взаимодействовать с картой, но это слишком много работы, и почему вы хотите затемнить карту? разве это не настройка монитора/проектора? - person kennyzx; 19.10.2014
comment
Мне нужно управлять яркостью с помощью ползунка, это моя работа в школе, я был бы благодарен, если бы вы могли мне помочь. Спасибо. - person RonYamin; 20.10.2014
comment
Попробуйте следующее: установите значение непрозрачности карты как значение newFactor в обработчике событий ползунка ValueChanged. - person kennyzx; 20.10.2014
comment
Чувак, теперь это работа, но с 1 проблемой. Это рисует все плоттер. Я хочу покрасить в черный цвет только ту карту, что на плоттере. Посмотрите результат: sizmedia.com/my.php?i=5mqmwoju5zmz.png ..... sizmedia.com/my.php?i=lmym2mmmdjhz.png ... Результат, который я хочу, таков: sizmedia.com/my.php ?i=zyzgnwmmkjdk.png , разница в том, что я вижу галочку (отметки шкалы) - person RonYamin; 26.10.2014
comment
поместите черный холст (то, что имеет фоновый цвет, установите его как черный) под карту, он имеет тот же размер и размещен точно в том же месте, что и карта, используйте его в качестве фона. оставьте фон плоттера по умолчанию. - person kennyzx; 26.10.2014
comment
Как поместить холст точно в положение карты на графике? Не могли бы вы помочь мне, пожалуйста? :) - person RonYamin; 26.10.2014
comment
Я пытался поместить холст, теперь, если я помещаю холст на карту, я не могу щелкнуть по карте, это похоже на слой, который заблокировал карту. А если холст за плоттером я этого не вижу. Нет возможности установить между плоттером и картой? Что делать ? Помогите пожалуйста мне - person RonYamin; 26.10.2014
comment
я не знаю, если вы сначала добавляете что-то в плоттер, а потом добавляете карту в плоттер, то это должно быть между плоттером и картой. я не могу попробовать это сейчас. нет среды разработки - person kennyzx; 26.10.2014
comment
Хорошо, я подожду, пока ты не попробуешь. Мне не удается сделать это в одиночку. Спасибо, в любом случае. ‹3 - person RonYamin; 26.10.2014
comment
Я пытался, но безуспешно, я думал, что могу добавить холст WPF или что-то в плоттер, но это не так, как я думал... извините, приятель, не смог помочь вам с этим - person kennyzx; 28.10.2014