2016-09-02 5 views
0

Прежде всего, спасибо, что нашли время, чтобы прочитать!Размер ползунка изменяется при инициализации

Итак, я столкнулся с следующим: Я сделал простую вещь перед моим экзаменом завтра. Я пытался изменить фон холста, когда я изменил значение ползунка выше. После того, как я снова и снова сталкивался с моими ошибками, я сдался и открыл отлажку. Aaand, по-видимому, метод, который должен срабатывать, когда что-то меняется, срабатывает, когда Mainwindow.xaml инициализирует компоненты. (И фон canvas - pitchblack, независимо от того, какое значение имеет слайдер. Поэтому я думаю, что синтаксический анализ от строки до байта тоже не работает) Должен ли я использовать другое событие?

public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void HSlider_SizeChanged(object sender, SizeChangedEventArgs e) 
    { 
     doShit(HSlider.Value);//when debugging, the program stops here before the window even pops up 
    } 

    private void VSlider_SizeChanged(object sender, SizeChangedEventArgs e) 
    { 
     doShit(VSlider.Value); 
    } 

    private void doShit(double Value) 
    { 
     SolidColorBrush br = new SolidColorBrush(); 
     for (int count = 0; count < Value; ++count) 
     { 
      br.Color = Color.FromRgb(Byte.Parse(Value.ToString()), Byte.Parse(Value.ToString()), Byte.Parse(Value.ToString())); 
     } 
     drawingCanvas.Background = (br); 
    } 
+0

Каковы были ошибки, которые вы получили? –

+0

Приращение ползунков изменит ваше значение цвета на 1, не сильно изменится (EG Color (0,0,0) - черный. Цвет (1,1,1) также черный. Кроме того, событие SizeChanged вызывается, когда слайдер растет или уменьшается, я думаю, что вы хотите посмотреть событие ValueChanged. Вы можете умножить значение * 16 для получения больших номеров цветов, но необходимо использовать контрольные проверки. –

+0

Ну, сначала я попытался добавить Rectangles к холсту, чтобы которые Visual Studio подсказывала мне, что они уже были дочерними, и поэтому их нельзя было добавить (эта ошибка сохранялась даже после того, как я добавил дополнительную строку, чтобы полностью очистить холст) –

ответ

0

Джим,

уточнить цвет вещь, попробуйте это. Slider Minvalue = 0, MaxValue = 15. Тогда ваш метод намного проще.

 private void doShit(double Value) 
{ 
    Value = Math.Min(Value, 15) 
    SolidColorBrush br = new SolidColorBrush(); 
    br.Color = Color.FromArgb(100, (int) Value*16, (int) Value*16, (int) Value*16); 
    drawingCanvas.Background = (br); 
} 
+0

Это действительно исправляло проблему цвета, не думал о значениях, до 255 :) И для части ошибки я понял это! Необходимым событием было не SizeChanged, а ValueChanged, что имело больше смысла. –

Смежные вопросы