• Martes 23 de Abril de 2024, 08:16

Autor Tema:  Gráficos En C++.net O C#.net...  (Leído 3232 veces)

ymabreu

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Gráficos En C++.net O C#.net...
« en: Viernes 18 de Enero de 2008, 06:55 »
0
Hola.
Quiero ver si puedo poner dos imágenes en un Panel superpuestas de forma tal que al dibujar una línea en el objeto superior pueda ver la imagen que está debajo y que fue cargada antes de dibujar la linea.
Básicamente la duda consiste en crear un objeto que me permita dibujar en el y que lo que no he dibujado permanezca transparente.

De antemano muchas gracias.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Gráficos En C++.net O C#.net...
« Respuesta #1 en: Viernes 18 de Enero de 2008, 14:28 »
0
no entiendo..
sino lo has dibujado como permanecera transparente.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

ymabreu

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Gráficos En C++.net O C#.net...
« Respuesta #2 en: Viernes 18 de Enero de 2008, 16:33 »
0
Cita de: "JuanK"
no entiendo..
sino lo has dibujado como permanecerá transparente.
Déjame intentarlo de nuevo a ver si me explico:
I)
-Supongamos que tengo un objeto myGraphic de tipo graphic y que trace una línea en dicho objeto.
-Ahora quiero almacenar lo que tengo en myGraphic en un pictureBox de forma tal que nada mas aparezca la línea que dibujé, el resto no quiero que tenga ningún color.

Es posible hacer esto?
Cómo?

II) Ya que empece voy a seguir preguntando:
Lo anterior(en caso que se pueda) me permite modificar myGraphic de forma que no se note y después de realizar lo deseado lo mostraría. Como hago para que se este viendo a medida que voy haciendo los cambios, algo mas sofisticado que pasar myGraphic al pictureBox cada ves que haga algún cambio.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Gráficos En C++.net O C#.net...
« Respuesta #3 en: Viernes 18 de Enero de 2008, 16:51 »
0
Cita de: "ymabreu"
Cita de: "JuanK"
no entiendo..
sino lo has dibujado como permanecerá transparente.
Déjame intentarlo de nuevo a ver si me explico:
I)
-Supongamos que tengo un objeto myGraphic de tipo graphic y que trace una línea en dicho objeto.
-Ahora quiero almacenar lo que tengo en myGraphic en un pictureBox de forma tal que nada mas aparezca la línea que dibujé, el resto no quiero que tenga ningún color.

Es posible hacer esto?
Cómo?

II) Ya que empece voy a seguir preguntando:
Lo anterior(en caso que se pueda) me permite modificar myGraphic de forma que no se note y después de realizar lo deseado lo mostraría. Como hago para que se este viendo a medida que voy haciendo los cambios, algo mas sofisticado que pasar myGraphic al pictureBox cada ves que haga algún cambio.
pictureBox1.Clear();
//y luego dibujas...

dibuja todo en un objeto Bitmap, y luego cuando hayas hecho los cambios asigna

pictureBox1.Image= new Bitmap(elotroBitmap);
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

ymabreu

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Gráficos En C++.net O C#.net...
« Respuesta #4 en: Viernes 18 de Enero de 2008, 23:42 »
0
Por si a alguien le sirve lo hice de la siguiente forma:
Nota>El código que yo escribí esta en color morado, lo otro(lo azul) sale por defecto.

...
public ref class Form1 : public System::Windows::Forms::Form
   {
   public:
      Form1(void)
      {
         InitializeComponent();
         //
         //TODO: Add the constructor code here
         //         
      }

   protected:
      /// <summary>
      /// Clean up any resources being used.
      /// </summary>
      ~Form1()
      {
         if (components)
         {
            delete components;
         }
      }
private:
      /// <summary>
      /// Required designer variable.
      /// </summary>

      //De mi
      System::Drawing::Graphics^ myGraphics;
      //Por defecto

      System::ComponentModel::Container ^components;
....

   private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {

   myGraphics = pictureBox1->CreateGraphics();

        //defino las variables necesarias para poder pintar lo que deseo.
   Point startPoint = Point(0,0);
   Point endPoint = Point(14, 15);
   Pen ^penCurrent = gcnew Pen(Color::Red);

//aquí pinto lo que quiera
myGraphics->DrawLine( penCurrent, startPoint, endPoint );   

          }

Está hecho en Visual C++.net 2005 Express.
Así voy viendo lo que se está dibujando.
Si quisiera dibujar primero y después mostrarlo lo podría hacer creando otro pictureBox2(con la propiedad visible=false) en el que dibujaría como se muestra arriba y posteriormente pasaría el valor de la imagen de este al pictureBox1.

Nuevamente muchas gracias por todas las sugerencias.