Pregunta rara. Labels y coordenadas de pantalla

12/09/2009 - 14:10 por Alberto | Informe spam
Tengo que desarrollar una aplicación un poco especial y aún estoy
planteándome cómo implementarla.

En principio necesitaría volcar un texto en un Label pero y aquí viene
lo raronecesitaría conocer las coordenadas de pantalla de cada palabra.
También me valdría la de los espacios en blanco que las separan.

No encuentro el modo de hacerlo así que os agredecería mucho alguna idea.

Preguntas similare

Leer las respuestas

#6 Alberto Poblacion
13/09/2009 - 09:56 | Informe spam
"Alberto" wrote in message
news:
Como no puedo hacer que se dispare el evento Paint del panel



Sí que puedes hacer que se dispare: para eso el panel tiene el método
Invalidate().

estaba pensando en crearlo a mano para aprovechar el Paint y escribir el
texto en su superficie. Y aquí viene mi problema Tengo declarado como
global un objeto Panel (pnl) sin instanciar. Para crearlo, utilizo el
siguiente código:

this.pnl = new Panel();
this.pnl.BackColor = System.Drawing.Color.MistyRose;
this.pnl.Location = new System.Drawing.Point(0, 0);
this.pnl.Name = "pnl";
this.pnl.Size = new System.Drawing.Size(661, 100);

Para probarlo, lo estoy ejecutando al pulsar un botón pero el panel no
aparece aunque parece que el objeto existe ya que si posteriormente, al
pulsar otro botón, le modifico el valor de alguna propiedad, me deja.



Si quieres que el panel aparezca en pantalla, después de crearlo con
las instrucciones anteriores tienes que añadirlo a la colección Controls del
formulario:

this.Controls.Add(pnl);

Pero si lo que quieres es hacer el dibujo a mano sin esperar al evento
Paint, lo que puedes hacer es crear un objeto BitMap en memoria y dibujar
sobre él lo que quieras. Para visualizarlo más tarde, basta con que asignes
el bitmap a la propiedad Image de un PictureBox.
Respuesta Responder a este mensaje
#7 Alberto
13/09/2009 - 22:32 | Informe spam
Me está funcionando correctamete. Desconocía el método MeasureString de
Graphics y me resultó muy útil tu aportación.
Muchas gracias por la ayuda.


"Alberto Poblacion"
escribió en el mensaje de noticias
news:%
"Alberto" wrote in message
news:
Como no puedo hacer que se dispare el evento Paint del panel



Sí que puedes hacer que se dispare: para eso el panel tiene el método
Invalidate().

estaba pensando en crearlo a mano para aprovechar el Paint y escribir el
texto en su superficie. Y aquí viene mi problema Tengo declarado como
global un objeto Panel (pnl) sin instanciar. Para crearlo, utilizo el
siguiente código:

this.pnl = new Panel();
this.pnl.BackColor = System.Drawing.Color.MistyRose;
this.pnl.Location = new System.Drawing.Point(0, 0);
this.pnl.Name = "pnl";
this.pnl.Size = new System.Drawing.Size(661, 100);

Para probarlo, lo estoy ejecutando al pulsar un botón pero el panel no
aparece aunque parece que el objeto existe ya que si posteriormente, al
pulsar otro botón, le modifico el valor de alguna propiedad, me deja.



Si quieres que el panel aparezca en pantalla, después de crearlo con
las instrucciones anteriores tienes que añadirlo a la colección Controls
del formulario:

this.Controls.Add(pnl);

Pero si lo que quieres es hacer el dibujo a mano sin esperar al evento
Paint, lo que puedes hacer es crear un objeto BitMap en memoria y dibujar
sobre él lo que quieras. Para visualizarlo más tarde, basta con que
asignes el bitmap a la propiedad Image de un PictureBox.

Respuesta Responder a este mensaje
#8 Alberto
14/09/2009 - 12:32 | Informe spam
Me encuentro con un problema menor pero no sé cómo resolver.

Tengo un texto dibujado sobre el panel con DrawString y medidas cada una de
las palabras con MeasureString pero ahora, si muestro una ventana tipo
cuadro de diálogo y pasa por encima del texto, éste se borra.

¿Qué solución le puedo dar? Gracias

"Alberto" escribió en el mensaje
news:
Tengo que desarrollar una aplicación un poco especial y aún estoy
planteándome cómo implementarla.

En principio necesitaría volcar un texto en un Label pero y aquí viene
lo raronecesitaría conocer las coordenadas de pantalla de cada
palabra. También me valdría la de los espacios en blanco que las separan.

No encuentro el modo de hacerlo así que os agredecería mucho alguna idea.
Respuesta Responder a este mensaje
#9 Alberto Poblacion
14/09/2009 - 14:03 | Informe spam
"Alberto" wrote in message
news:%
Me encuentro con un problema menor pero no sé cómo resolver.

Tengo un texto dibujado sobre el panel con DrawString y medidas cada una
de las palabras con MeasureString pero ahora, si muestro una ventana tipo
cuadro de diálogo y pasa por encima del texto, éste se borra.

¿Qué solución le puedo dar? Gracias



¿Tienes las instrucciones de dibujo metidas en el evento Paint? En
principio, cuando pasas por encima otra ventana, se debería disparar
automáticamente de nuevo el evento Paint y por tanto repintarse el panel.
¿Cómo lo tienes organizado?
Respuesta Responder a este mensaje
#10 Alberto
15/09/2009 - 19:19 | Informe spam
Tienes razón. Puse un contador para ver las veces que se disparaba el Paint
y como ascendía a 4 sin hacer nada, lo puse condicionado a tener algo
pendiente de escribir. Al quitar la condición veo que se dibuja
correctamente.

Leí que MeassureString es bastante costoso en cuanto a tiempo de procesador
por eso intentaba minimizar el número de veces que se ejecuta.

Gracias.

"Alberto Poblacion"
escribió en el mensaje de noticias
news:
"Alberto" wrote in message
news:%
Me encuentro con un problema menor pero no sé cómo resolver.

Tengo un texto dibujado sobre el panel con DrawString y medidas cada una
de las palabras con MeasureString pero ahora, si muestro una ventana tipo
cuadro de diálogo y pasa por encima del texto, éste se borra.

¿Qué solución le puedo dar? Gracias



¿Tienes las instrucciones de dibujo metidas en el evento Paint? En
principio, cuando pasas por encima otra ventana, se debería disparar
automáticamente de nuevo el evento Paint y por tanto repintarse el panel.
¿Cómo lo tienes organizado?

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida