FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Repintado de un objeto grafico
Hola amigos
Estoy trabajando con un PaintBox sobre el cual dibujo un texto en forma vertical creado con LOGFON y CreateFontIndirect, utilizando el canvas del objeto (en el hilo "orientacion del texto", esta explicado). Mi problema radica en que cada vez que el objeto se repinta se borra el texto creado sobre el, intente colocar la funcion que crea el texto en el evento onpaint del objeto, para que asi cada vez que se repintara el objeto se volviera a crear el texto, el cual efectivamente se vuelve a crear, pero perdiendo el efecto de vertivalidad perseguido. Esto mismo lo he realizado en VB, en el cual existe la propiedad AutoRedraw en los objetos graficos, propiedad que cualdo se coloca en true activa el redibujado automático de estos objetos, repintando imagenes y texto en la pantalla, en relacion a la imagen almacenada en memoria. El objeto no recibe eventos Paint; se vuelve a dibujar cuando es necesario, usando la imagen almacenada en memoria. Esto quiere decir que cuando se pinta algun texto o imagen en el objeto, este se vuelve a repintar con la imagen o el texto creado por nosotros y no con la apariencia original del objeto utilizado. Mi pregunta es ¿existe alguna propiedad en el canvas de los objetos graficos, como el PaintBox, que permita hacer lo mismo que el AutoRedraw en VB?. De antemano gracias por cualquier ayuda. |
#2
|
||||
|
||||
¿En qué momento usas CreateFontIndirect? Yo supongo que debes usarlo en el evento OnPaint, es decir, cada vez que se requiere dibujar el texto.
// Saludos |
#3
|
||||
|
||||
Acabo de copiar el código que vic_ia te puso en el hilo http://www.clubdelphi.com/foros/showthread.php?t=11878 y lo pegué tal cuál en el evento OnPaint de un PaintBox y funcionó perfecto.
// Saludos |
#4
|
||||
|
||||
hola...
tal vez el problema radica que dibujas o asignas las propiedades del FONT antes de dibujar el resto de tu imagen o grafico, he probado colocar en el evento OnPaint del PaintBox el codigo de esta forma y funciona..
saludos... Última edición por vic_ia fecha: 30-06-2004 a las 23:18:47. |
#5
|
|||
|
|||
Desde el eveto onpaint llamo a la funcion que crea el texto vertical de esta forma:
Respecto al crear un rectangulo donde dibujar el texto no me sirve, ya que el efecto que pretendo dar con el texto vertical es crear primero un gradian sobre el objeto (PaintBox) y despues crear el texto en forma vertical, estilo barra de inicio de win. Por esto que la creacion de un rectangulo haria que el efecto que pretendo lograr no se viera bien. Y les vuelvo a repetir cuando se genera el efecto onpaint en efecto del texto desaparece mostrandome el texto en forma horizontal y no vertical. quizas puedo estar realizando algo mal...ademas para completar tambien les muestro el codigo utilizado para gererar el gradian:
|
#6
|
||||
|
||||
hola...
respecto a lo que muestras de tu codigo ... Cita:
quiero entender que el procedimiento GradianPain es el asignado al evento OnPaint de tu PaintBox, si es asi, esto hace que cada vez que pides que se dibuje (por algun evento, este cambia sus dimensiones varias veces, lo que posiblemente haga que otros objetos vuelvan a llamar a ese evento, y esto puede hacer que al solicitar la creación del font no tenga los recursos necesarios; por otro lado dentro del procedimiento llamas a Refresh lo que hara que se vuelva a solicitar el repintado, lo cual no necesariamente se hara de manera inmediata, tal vez esto ultimo sea lo que hace que se pierda la transformación... yo cambiaria el enfoque, pienso que cada vez que cambias las dimensiones del control este llama a su evento OnPain, por lo que dentro de este solo debiera estar lo concerniente al dibujado interior del el, nada mas, creo que el cambio de las dimensiones lo debieras llevar a cabo desde.. no se por ejemplo desde donde lo llamas para que aparezca... en cuanto tenga tiempo tratare de checarlo con detenimiento... saludos... |
|
|
|