2016-09-02 3 views
0

Vor allem, vielen Dank, dass Sie sich die Zeit zu lesen!Slider Größe ändert sich bei der Initialisierung

Also, was ich angetroffen habe, ist das Folgende; Ich habe morgen vor meiner Prüfung ein einfaches Ding gemacht. Ich habe versucht, den Hintergrund eines Canvas zu ändern, als ich den Wert des Schiebereglers oben änderte. Nachdem sich immer wieder Fehler auf meinem Gesicht zeigten, gab ich nach und öffnete das Debugging. Aaund anscheinend die Methode, die ausgelöst wird, wenn sich etwas ändert, wird ausgelöst, wenn Mainwindow.xaml die Komponenten initialisiert. (Und der Canvas-Hintergrund ist pechschwarz, egal welchen Wert der Schieberegler hat. Also denke ich, dass das Parsing von String zu Byte auch nicht funktioniert) Muss ich ein anderes Event verwenden?

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

Was waren die Fehler, die Sie erhalten haben? –

+0

Inkrementieren der Schieberegler wird den Farbwert um 1 ändern, nicht viel eine Änderung (EG Farbe (0,0,0) ist schwarz Farbe (1,1,1) ist auch schwarz. Zusätzlich wird das SizeChanged Ereignis beim Schieberegler aufgerufen wächst oder schrumpft, ich denke, Sie wollen ValueChanged Event betrachten Sie könnten den Value * 16 multiplizieren, um größere Farbzahlen zu erhalten, aber Constraint-Checks müssten angewendet werden –

+0

Nun, zuerst habe ich versucht, Rectangles zu der Leinwand hinzuzufügen welches Visual Studio mich anregte, dass sie bereits ein Child waren und daher nicht hinzugefügt werden konnten (dieser Fehler blieb bestehen, auch nachdem ich eine zusätzliche Zeile hinzugefügt hatte, um den Canvas vollständig zu löschen) –

Antwort

0

Jim,

die Farbe Sache zu klären, versuchen Sie dies. Slider Minvalue = 0, MaxValue = 15. Dann ist Ihre Methode viel einfacher.

 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

Dies behebt tatsächlich das Farbproblem, dachte nicht über die Werte nach bis zu 255 :) Und für den Fehler Teil, habe ich es herausgefunden! Das erforderliche Ereignis war nicht SizeChanged, sondern ValueChanged, was ohnehin sinnvoller war. –

Verwandte Themen