Asignar variable a un color draw

Iniciado por Cripting, 26 Enero 2017, 03:58 AM

0 Miembros y 1 Visitante están viendo este tema.

Cripting

Bueno la idea es que la variable obtenga el color de una picturebox de un form,
Llevo poco en esto  :-( ayuda :S no se si estoy dando buen uso a la variable eh intentando desde string con un label pero me da el mismo error X_X

Código (csharp) [Seleccionar]
class Obj : objeto
   {
       private JKer Ker;
       object c1;
       JKer PKER;
       Cola siguiente;
       public Cola(int x, int y)

       {

           Ker = PKER;
           c1 = Ker.pictureBox1.BackColor;//aqui le doy valor a la variable que sea el color, también eh intentado colgar el caracter de un color pero no me da
          // Color = c1;
           this.x = x;
           this.y = y;
           siguiente = null;
       }
       public void dibujar(Graphics g)
       {
           if (siguiente != null)
           {
               siguiente.dibujar(g);
           }
           g.FillRectangle(new SolidBrush(Color = c1), this.x, this.y, this.ancho, this.ancho);
       }

Eleкtro

Hola.

1. Al objeto c1 le estás asignando el type Object, cuando debería ser Color.

2. Los objetos Ker y PKER son exactamente lo mismo. Elimina una de esas referencias, pues eso es programación redundante.

3. La estructuración del código no es la más adecuada, estás asumiendo demasiadas cosas que podrían salir mal en el Ctor. En lugar de "asuimir" deberías "asegurar", pasándole los argumentos necesarios al Ctor y opcionálmente añadiendo los controles de errores que consideres oportunos.

4.
Cita de: Cripting en 26 Enero 2017, 03:58 AMme da el mismo error

Pues empieza por especificar que tipo de excepción ocurre y muestra el mensaje completo de error. No somos adivinos.




Aquí tienes un ejemplo a adaptar:

Código (csharp) [Seleccionar]
public sealed class Class1 {

private readonly Color myColor;

public Class1(PictureBox pcb, Point pt) {
this.myColor = pcb.BackColor;
this.x = pt.X;
this.y = pt.Y;
// Etc...
}

}


Saludos








Cripting

Eh implementado ya todo y eh echo unos ajustes, pero ahora me atore en la linea de
g.FillRectangle(new SolidBrush(Color = c1), this.x, this.y, this.ancho, this.ancho);
Donde en la structura de Color no se como hacer para que la variable sea el Color, Intente poniedo como esta en la linea (Color = c1)

Eleкtro

#3
Cita de: Cripting en 26 Enero 2017, 20:34 PMno se como hacer para que la variable sea el Color

El objeto SolidBrush es disposable, así que debes asegurarte de liberarlo:

Código (csharp) [Seleccionar]
public void Dibujar(Graphics g) {

       //...
Rectangle rc = new Rectangle(x, y, width, height);

using (SolidBrush br = new SolidBrush(color)) {
g.FillRectangle(br, rc);
}
       //...

}


Saludos