SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => Otros CLR => Mensaje iniciado por: ymabreu en Viernes 18 de Enero de 2008, 06:55
-
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.
-
no entiendo..
sino lo has dibujado como permanecera transparente.
-
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.
-
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);
-
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.