• Miércoles 15 de Mayo de 2024, 05:56

Autor Tema:  Rectangulo con esquinas redondas  (Leído 3588 veces)

lUis_mIguel

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Rectangulo con esquinas redondas
« en: Domingo 14 de Septiembre de 2008, 19:05 »
0
Saludos al foro!
Estoy programando (aficionado) en c# con VS2008 en un winform.
Quisiera pedir vuestra ayuda, pues estoy atascado en lo siguiente:
He creado una clase que dibuja cuatro líneas que no se tocan en las esquinas, así formo un rectángulo (SIN ESQUINAS); ahora quiero dibujar cuatro arcos una en cada esquina, pero no me aclaro con esto último, ¿podríais echarme una manita por favor?
ESTO ES LO QUE TENGO HECHO:
protected override void OnPaint( PaintEventArgs e )
      {
         System.Drawing.Graphics areaToPaint = this.CreateGraphics();
         System.Drawing.Pen myPen = new System.Drawing.Pen( System.Drawing.Color.MediumSlateBlue );
         System.Drawing.Rectangle myRect = new System.Drawing.Rectangle( 50, 50, 500, 100 );
         ExtensionesGraficas.RectRoundCorner( areaToPaint, myPen, myRect, 8 );
      }
public static void RectRoundCorner( this Graphics g, Pen pen, Rectangle rect, int radio )
      {
         g.DrawLine( pen, rect.Left + radio, rect.Top, rect.Right - radio, rect.Top );
         g.DrawLine( pen, rect.Left + radio, rect.Bottom, rect.Right - radio, rect.Bottom );
         g.DrawLine( pen, rect.Left, rect.Top + radio, rect.Left, rect.Bottom - radio );
         g.DrawLine( pen, rect.Right, rect.Top + radio, rect.Right, rect.Bottom - radio );
         //(aquí tengo que dibujar las cuatro esquinas)
      }
Espero haberme expresado con claridad y se entienda el código. Si me podéis orientar os lo agradezco de antemano,
LMiguel
------------
Como podéis ver en el adjunto ya lo he conseguido. Solo se requería pasar a Draw.Arc las coordenadas del vértice, y la anchura y altura, del cuadrado imaginario en cuyo interior se dibuja la circunferencia de la cual estamos pintando un arco.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

FernandaUY

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Rectangulo con esquinas redondas
« Respuesta #1 en: Lunes 6 de Septiembre de 2010, 04:26 »
0
Yo utilizo el siguiente método

Código: C#
  1.  public void Redondeado()
  2.       {
  3.          GraphicsPath gp = new GraphicsPath();
  4.          //SolidBrush oSolidBrush = new SolidBrush(_ColorRelleno);
  5.          Brush oSolidBrush = new LinearGradientBrush(new Rectangle(_Izquierda, _Arriba, _Ancho, _Altura), _ColorRelleno, Color.White, 45, false);
  6.          Pen oPen = new Pen(_ColorBorde, _AnchoBorde);
  7.  
  8.  
  9.          gp.AddLine(_Izquierda + _Radio, _Arriba, _Izquierda + _Ancho - (_Radio * 2), _Arriba); // Line
  10.          gp.AddArc(_Izquierda + _Ancho - (_Radio * 2), _Arriba, _Radio * 2, _Radio * 2, 270, 90); // Corner
  11.          gp.AddLine(_Izquierda + _Ancho, _Arriba + _Radio, _Izquierda + _Ancho, _Arriba + _Altura - (_Radio * 2)); // Line
  12.          gp.AddArc(_Izquierda + _Ancho - (_Radio * 2), _Arriba + _Altura - (_Radio * 2), _Radio * 2, _Radio * 2, 0, 90); // Corner
  13.          gp.AddLine(_Izquierda + _Ancho - (_Radio * 2), _Arriba + _Altura, _Izquierda + _Radio, _Arriba + _Altura); // Line
  14.          gp.AddArc(_Izquierda, _Arriba + _Altura - (_Radio * 2), _Radio * 2, _Radio * 2, 90, 90); // Corner
  15.          gp.AddLine(_Izquierda, _Arriba + _Altura - (_Radio * 2), _Izquierda, _Arriba + _Radio); // Line
  16.          gp.AddArc(_Izquierda, _Arriba, _Radio * 2, _Radio * 2, 180, 90); // Corner
  17.          gp.CloseFigure();
  18.  
  19.          _Area.FillPath(oSolidBrush, gp);
  20.          _Area.DrawPath(oPen, gp);
  21.          gp.Dispose();
  22.       }
  23.