|
Программирование >> Автоматически обновляемые приложения
int min =0; Minimum value for progress range int max =100; Maximum value for progress range int val =0; Current progress Color BarColor = Color.Blue; Color of progress meter protected override void OnResize(EventArgs e) { Invalidate the control to get a repaint, this.Invalidate(); protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; SolidBrush brush = new SolidBrush(BarColor); float percent = (float) (val - min) / (float) (max - min) . Rectangle rect = this.ClientRectangle; Вычислим район, в котором рисуем индикатор, rect.Width = (int)((float)rect.Width * percent); Нарисуем индикатор. g.FillRectangle(brush, rect); Нарисуем ЗО-рамку вокруг индикатора. Draw3DBorder(g) ; Освободим ресурсы, brush.Dispose() ; g.Dispose (); public int Minimum { get { return min; Листинг 6,7. УГотановка неое5с>димь1Х свойств у, со§<р(нрго jHHAHKaTOpa. с : set { Запретим отрицательные значения, if (value < 0) min = 0; Убедимся, что минимум никогда не устанавливается большим, чем максимум, if (value > max) min = value; min = value; Проверим, что значение все еще внутри допустимого диапозона. if (val < min) val = min; Запросим перерисовку элемента, this.Invalidate(); public int Maximum { get { return max; Убедимся, что максимум не устанавливается меньше минимума. if (value < min) min = value; max = value; Убедимся, что значение остается в допустимом интервале, if (val > max) val = max; Запросим перерисовку элемента, this.Invalidate(); public int Value get { return val; int oldValue = val; Убедимся, что значение в допустимом интервале, if (value < min) val = min; else if (value > max) val = max; val = value; Запросим перерисовку только измененной области, float percent; Rectangle newValueRect = this.ClientRectangle; Rectangle oldValueRect = this.ClientRectangle;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |