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

#1 Alberto
12/09/2009 - 14:20 | Informe spam
Perdón por el despiste pero cuando digo "las coordenadas de pantalla de cada
palabra" me refiero a las coordendas (x, y) inferior izquierda y derecha.

"Alberto" escribió en el mensaje de noticias
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
#2 Alberto Poblacion
12/09/2009 - 14:26 | Informe spam
"Alberto" wrote in message
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.



En lugar de usar un Label, podrías usar un control tal como un Panel (o
el propio Form) y usar su evento Paint para escribir el texto mediante
llamadas a GDI+ (DrawText). Así, siempre conoces la coordenada inicial de la
primera palabra, porque se la pasas tú al DrawText. Para averiguar las
siguientes coordenadas, puedes usar MeasureText, e irle pasando el string
"palabra a palabra" para que te vaya midiendo cada una de ellas.
Respuesta Responder a este mensaje
#3 Alberto
12/09/2009 - 16:35 | Informe spam
Gracias. Desconocía MeasureText. Lo probaré y comentaré los resultados.

Otro problema que tengo es cómo hacer que el texto (será una sola frase)
ocupe todo el ancho posible de pantalla. Es decir, me gustaría calcular el
tamaño de fuente para que la frase llenase todo el ancho. ¿Lo veis factible?
Gracias.

"Alberto Poblacion"
escribió en el mensaje de noticias
news:%
"Alberto" wrote in message
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.



En lugar de usar un Label, podrías usar un control tal como un Panel (o
el propio Form) y usar su evento Paint para escribir el texto mediante
llamadas a GDI+ (DrawText). Así, siempre conoces la coordenada inicial de
la primera palabra, porque se la pasas tú al DrawText. Para averiguar las
siguientes coordenadas, puedes usar MeasureText, e irle pasando el string
"palabra a palabra" para que te vaya midiendo cada una de ellas.

Respuesta Responder a este mensaje
#4 Alberto Poblacion
12/09/2009 - 17:43 | Informe spam
"Alberto" wrote in message
news:
Otro problema que tengo es cómo hacer que el texto (será una sola frase)
ocupe todo el ancho posible de pantalla. Es decir, me gustaría calcular el
tamaño de fuente para que la frase llenase todo el ancho. ¿Lo veis
factible?



Una vez más, la solución que se me ocurre consiste en llamar a
MeasureString. Yo haría un bucle en el que iría cambiándole el tamaño al
font, y pidiéndole al MeasureString que me mida lo que mediría el string si
se pintase con ese font. En cuanto el valor devuelto sea mayor que el ancho
de la pantalla, tomamos el valor anterior y salimos del bucle.
Respuesta Responder a este mensaje
#5 Alberto
12/09/2009 - 21:13 | Informe spam
Estoy haciendo algunas pruebas y me encuentro con algún problema.

Como bien me indicas, debo utilizar el evento Paint del control donde vaya a
escribir (estoy probando con un panel). El problema es que el usuario
escribirá una frase en un cuadro de diálogo que posteriormente se deberá
escribir dicho panel.

Como no puedo hacer que se dispare el evento Paint del panel 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.

Muchísimas gracias por la ayuda.

"Alberto Poblacion"
escribió en el mensaje de noticias
news:%
"Alberto" wrote in message
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.



En lugar de usar un Label, podrías usar un control tal como un Panel (o
el propio Form) y usar su evento Paint para escribir el texto mediante
llamadas a GDI+ (DrawText). Así, siempre conoces la coordenada inicial de
la primera palabra, porque se la pasas tú al DrawText. Para averiguar las
siguientes coordenadas, puedes usar MeasureText, e irle pasando el string
"palabra a palabra" para que te vaya midiendo cada una de ellas.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida