2016-07-12 4 views
0

Мне было интересно, можно ли заполнить определенный процент объекта Rectangle, который был нарисован на экране, так что он ведет себя как индикатор прогресса, где вы можете смотреть его «уровень» вверх и вниз , В частности, я хотел бы заполнить его сверху донизу, а не слева направо.Частично заполнить объект Rectangle

+3

Возможно, вы могли бы разместить меньший прямоугольник внутри большего и полностью заполнить внутреннюю. Затем сделайте внутреннюю большую поэтапно. –

+1

Это то, что я думал о резервном копировании, не имея возможности манипулировать заполнением, чтобы работать только с частью Rectangle, я просто подумал, что я также посмотрю, что может предложить кто-то с большим опытом в этом, чем я. Рад узнать, что это не идея! –

+0

Обратите внимание, что DrawRectangle выключен одним справа внизу! Помимо этого, используя растущий 2-й прямоугольник (или, проще: перегрузка с четырьмя целыми числами и растущей высотой и сокращение y), это способ пойти. Вы также можете изучить LinearGradientBrush для цветовых эффектов! – TaW

ответ

1

Вы можете попробовать это.

private void button1_Click(object sender, EventArgs e) 
{ 
    panel1.Width = 400; 
    panel1.Height = 50; 

    using (Graphics g = this.panel1.CreateGraphics()) 
    { 
     g.Clear(Color.Black); 
     Pen pen = new Pen(Color.Red, 2);    
     for (int i = 0; i <= 50;i++) 
     { 
      g.DrawRectangle(pen, 0, 0, 400, i);      
      Thread.Sleep(100); 
     }     
     pen.Dispose(); 
    } 
} 
+0

Глядя на это, кажется, что этот код нарисовал бы прямоугольник, фактическая высота которого будет масштабироваться, а не только цвет внутри его граничных границ? –

+0

@AlexWatts: Вы попробовали? – jp2code