2015-12-11 6 views
0

Я хочу нарисовать изогнутую область с цветом (черный в моем случае) в прямоугольнике.Как заполнить изогнутую область цветом в C# Winform?

Я попробовал несколько вещей FillPie, FillEllipse в OnPaint случае, но не в состоянии сделать, я хочу сделать, как этот Fill Curved Area

Я попытался код ниже. но это не то, что я хочу

protected override void OnPaint(PaintEventArgs e) 
    { 
     base.OnPaint(e); 
     Graphics gr = e.Graphics; 
     int x = 50; 
     int y = 50; 
     int width = 100; 
     int height = 100; 
    Rectangle rect = new Rectangle(x, y, width/2, height/2); 
    gr.FillRectangle(Brushes.Black, rect); 
    gr.FillPie(Brushes.White, x, y, width, height, 180, 90); 

    using (Pen pen = new Pen(Color.Yellow, 1)) 
     gr.DrawArc(pen, x, y, width, height, 180, 90); 
} 

этот код рисуется вот так. Я не хочу создавать дополнительный прямоугольник. MyCode

ответ

0

Я не 100% уверен, что это то, что вы хотите:

enter image description here

Я достиг этого путем создания Region с четвертью указанного прямоугольника. Затем я исключаю пирог из него, используя GraphicsPath. Полученную кривую затем заполняют, используя Graphics.FillRegion с черной щеткой:

protected override void OnPaint(PaintEventArgs e) 
    { 
     base.OnPaint(e); 
     Graphics gr = e.Graphics; 
     int x = 50; 
     int y = 50; 
     int width = 100; 
     int height = 100; 

     Rectangle rect = new Rectangle(x, y, width/ 2, height/2); 
     Region r = new Region(rect); 

     GraphicsPath path = new GraphicsPath(); 
     path.AddPie(x, y, width, height, 180, 90); 
     r.Exclude(path); 
     gr.FillRegion(Brushes.Black,r); 
    } 
Смежные вопросы