GraphicsPath, управление сверху - PullRequest
       11

GraphicsPath, управление сверху

0 голосов
/ 09 февраля 2010

У меня есть пользовательский элемент управления C #, где я хотел бы нарисовать круг позади текстового поля, привязанного к центру внизу элемента управления. Я рисую круг, как:

protected override void OnResize(EventArgs e)
{
   this.gp= new GraphicsPath();
   this.gp.AddEllipse(0,0,width,height); //this is the width and height of the control
   this.Region=new Region(this.gp);
   this.Refresh();
   base.OnResize (e);
}

protected override void OnPaint(PaintEventArgs pe)
{
   Color centerColor = Color.FromArgb(255,255,255,255);
   Color surroundColor = Color.FromArgb(255,255,255,255);
   PathGradientBrush br=new PathGradientBrush(this.gp);
   br.CenterColor=centerColor;
   br.SurroundColors=new Color[]{surroundColor};
   pe.Graphics.FillPath(br,this.gp);
}

Я добавил текстовое поле в элемент управления в конструкторе графического интерфейса.

Когда я запускаю это, я получаю что-то вроде этого:

alt text

Как сохранить эллипс за текстовым полем?

Спасибо, Mark

1 Ответ

3 голосов
/ 09 февраля 2010

Если вы хотите это в фоновом режиме, сделайте это в переопределении «OnPaintBackground», а не в OnPaint. Затем, когда вы захотите нарисовать его, аннулируйте область, в которой находится эллипс.

...