У вас есть две проблемы. Во- первых, Opacity
требует двойного, а не десятичное значение. Компилятор говорит вам , что в то время как есть преобразование между десятичной и дважды, это явное преобразование , что вам необходимо указать для того , чтобы его работать. Во - вторых, TrackBar.Value
это целое число , а не делением Int ПРОИЗВОДИМОГО INT приводит к междунар независимо от того , какой тип переменной , которую можно назначить. В этом случае существует неявное приведение от Int в десятичном или двойном - потому что нет никакой потери точности , когда вы делаете бросок - так что компилятор не жалуется, но значение , которое вы получите всегда 0, по- видимому, такtrackBar.Value
всегда меньше , чем 5000. Решение изменить код , чтобы использовать двойные (родной тип для непрозрачности) и не арифметику с плавающей точкой, явно делая постоянный двойной - который будет иметь эффект поощрения арифметики - или литья trackBar.Value
в два раза , который будет делать то же самое - или оба. О, и вам не нужно промежуточной переменной , если она не используется в другом месте. Я думаю, что компилятор будет оптимизировать его прочь, в любом случае.
trackBar.Opacity = (double)trackBar.Value / 5000.0;