• Jueves 2 de Mayo de 2024, 01:34

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - FernandaUY

Páginas: [1]
1
C# / Guardar contenido de un panel como imagen
« en: Sábado 11 de Septiembre de 2010, 18:07 »
Hola Gente.

Tengo una clase que hereda del control Panel. Sobre el Panel, dibujo un montón de rectangulos y lineas de conexión (es la representación de un grafo de WorkFlow).
Para salvarlo como imagen, estoy utilizando DrawToBitmap, el cual funciona, pero... (siempre hay un pero)

... cuando el tamaño del Panel est tan grande que debe hacer Scroll, lo único que salva es el ClientArea, pero no lo que queda debajo o a la derecha en el control.

Espero que se haya entendido la pregunta.
Gracias de antemano por la ayuda que puedan darme.
Saludos.

2
C# / Re: dibujar cuadro con texto Drawing2D
« en: Lunes 6 de Septiembre de 2010, 04:50 »
Podría ser algo así

Código: C#
  1.       public void Cuadro()
  2.       {
  3.          Brush oSolidBrush = new LinearGradientBrush(new Rectangle(_Izquierda,_Arriba,_Ancho,_Altura),_ColorRelleno,Color.White,45,false);
  4.          Pen oPen = new Pen(_ColorBorde, _AnchoBorde);
  5.  
  6.          // Dibuja el área
  7.          _Area.FillRectangle(oSolidBrush, _Izquierda, _Arriba, _Ancho, _Altura);
  8.  
  9.          // Dibuja el borde
  10.          _Area.DrawRectangle(oPen, _Izquierda, _Arriba, _Ancho, _Altura);
  11.  
  12.          // Dibuja el texto centrado en el cuadro
  13.          s = "Texto a dibujar";
  14.  
  15.          // if text empty not draw
  16.                if (String.IsNullOrEmpty(s))
  17.                   return;
  18.  
  19.                // Calculate text position
  20.                sizeText = _Area.MeasureString(s, _shapeFont);
  21.                textX = Math.Min(pStart.X, pEnd.X) + (Math.Abs(pStart.X - pEnd.X) / 2) - (sizeText.Width / 2);
  22.                textY = Math.Min(pStart.Y, pEnd.Y) + (Math.Abs(pStart.Y - pEnd.Y) / 2) - (sizeText.Height / 2);
  23.  
  24.                // Draw text
  25.                _Area.DrawString(s, _shapeFont, _shapeFontColorSolidBrush, textX, textY);
  26.       }
  27.  

3
C# / Overriding Mouse events
« en: Lunes 6 de Septiembre de 2010, 04:36 »
Hola. Tengo el siguiente problema. Estoy generando una clase Rectangulo para dibujar en un panel, pero cuando sobreescribo los eventos MouseDown y MouseUp, no se disparan.
Alguna ayuda? Gracias.

Código: C#
  1. using System;
  2. using System.Drawing;
  3. using System.Drawing.Drawing2D;
  4. using System.Collections.Generic;
  5. using System.Windows.Forms;
  6.  
  7. namespace Trevo.Windows.UI
  8. {
  9.    public class Rectangulo : Control
  10.    {
  11.       #region Miembros
  12.  
  13.       // Graficos
  14.       private Graphics _Area = null;
  15.       private Font _Letra = new Font("Tahoma", 8, FontStyle.Regular, GraphicsUnit.Point);
  16.  
  17.       // Posicion
  18.       private int _Izquierda = 0; // X
  19.       private int _Arriba = 0; // Y
  20.       private int _Ancho = 0;
  21.       private int _Altura = 0;
  22.  
  23.        #endregion
  24.   
  25.       #region Constructores
  26.  
  27.       public Rectangulo(Graphics pG)
  28.       {
  29.          _Area = pG;
  30.       }
  31.  
  32.  
  33.       public Rectangulo(Graphics pG, int pIzquierda, int pDerecha, int pAncho, int pAltura, int pRadio)
  34.       {
  35.          _Area = pG;
  36.  
  37.          _Izquierda = pIzquierda;
  38.          _Arriba = pDerecha;
  39.          _Ancho = pAncho;
  40.          _Altura = pAltura;
  41.          _Radio = pRadio;
  42.       }
  43.  
  44.       #endregion
  45.  
  46.       #region Overrides
  47.  
  48.       protected override void OnCreateControl()
  49.       {
  50.          this.MouseDown += new MouseEventHandler(this.Rect_MouseDown);
  51.          //MouseMove += new MouseEventHandler(Rect_MouseDown);
  52.          this.MouseUp += new MouseEventHandler(this.Rect_MouseDown);
  53.          base.OnCreateControl();
  54.       }
  55.  
  56.       #endregion
  57.  
  58.       #region Handlers
  59.  
  60.       private void Rect_MouseDown(object sender, MouseEventArgs e)
  61.       {
  62.          MessageBox.Show("click");
  63.       }
  64.  
  65.       #endregion
  66. }
  67.  

4
C# / Re: Rectangulo con esquinas redondas
« en: Lunes 6 de Septiembre de 2010, 04:26 »
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.  

Páginas: [1]