FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Centrar imagen en formulario maximizado
Hola, amigos.
He estado buscando y buscando por el foro, cómo centrar una imagen en un formulario y aunque heencontrado algo, no soluciona mi problema. La cuestión es la siguiente: Tengo un TImage de 3000 x 3000 px. Dibujo cosas partiendo del centro del canvas del mismo, que a veces son pequeñas y otras más grandes. Estoy intentando que, al presentar el formulario maximizado, la imagen quede en el centro. Tengo la propiedad Center del TImage a true y nada. Intento colocar las ScrollBars del ScrollBox que contiene el TImage en su posición central y nada. Si coloco manualmente la posición de las ScrollBars, consigo centrarla, pero cuando cambia la resolución de la pantalla, se vuelve a descolocar. Ya estoy convencido de que no voy a conseguirlo, por éso agracecería cualquier ayuda, cualquier idea... algo que no se me haya ocurrido y que pueda resolver el problema. Gracias anticipadas por vuestro tiempo y esfuerzo. Saludos. |
#2
|
||||
|
||||
Creo que no se puede en forma directa. Es decir, debes colocar la imagen sobre un TPanel y luego centrar este bajo el siguiente evento.
|
#3
|
||||
|
||||
Hola jhonalone.
Intenta de este modo:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#4
|
|||
|
|||
Gracias a ambos por vuestro tiempo y esfuerzo.
Pero ninguna de las propuestas resuelve mi caso. Recordad esto: El BitMap es de 3000x3000 pixeles. Los dibujos los hago en el centro del BitMap. A veces son pequeños y a veces más grandes. Por lo tanto, lo que pretendo es que el centro del BitMap, que es evidentemente más grande que el formulario maximizado ( en las pantallas de resolución normal; no hablo de resoluciones de 4000px, que las habrá, pero no es lo normal que se usen en casa), bueno como el mapa es más grande que la pantalla y dibujo en el centro del mapa, lo que quiero es que el centro del mapa aparezca en el centro de la pantalla, el usuario, podría con las ScrollBar desplazarse a su antojo por el mapa, pero inicialmente el centro del mapa lo quiero presentar en el centro de la pantalla (Si es posible). Me está pareciendo que estoy pidiendo algo que probablemente no pueda hacerse en Delphi. Creo que otros entornos de programación, lo hacen automáticamente. Finalmente, creo que voy a optar por la solución más práctica, aunque no sea la más ortodoxa, es decir: 1) Obtener empíricamente los valores de la posición de las barras de desplazamiento para las más conocidas resoluciones de pantalla. 2) Detectar la resolución que se está utilizando. 3) Aplicar las posiciones obtenidas para cada resolución (o la que más se parezca) Voy a empezar a trabajar sobre esto. Si alguien conoce una solución más general y más ortodoxa, estaré encantado de escucharla y agradecido por su aportación, que a lo mejor le sirve a alguien más que a mí. Saludos cordiales. |
#5
|
|||
|
|||
Compañeros.....
¡¡ME SIGUEN CRECIENDO LOS ENANOS!! ¿Por qué pueden complicarse tanto las cosas...? Al haer lo que comentaba en el post anterior, he podido comprobar que ¡¡TAMPOCO ME VALE!! Acabo de constatar que la misma resolución (p.e.: 1024x768) no funciona igual en todas las pantallas. Me explico: centrando el dibujo y tomando las posiciones (horizontal y vertical) de cada uno de los dos ScrollBar, si corro el programa en la misma pantalla (4:3) funciona bien, pero si corro el programa en una pantalla 16:9 (bueno más apaisada, porque me parece que no todas las pantallas apaisadas tienen la misma proporción 16:9), si corro el programa en esta pantalla, con la resolución ajustada a 1024x768 no sale centrada. es más, si lo centro manualmente y obtengo los valores HorzScrollBar.Position y VertScrollBar.Position, ¡¡¡SON DISTINTOS!!! de los obtenidos en en una pantalla 4:3. Lo dicho, "me crecen los enanos del circo" o, lo que es lo mismo, se me complecan las cosas. Si no es posible hacer lo que pretendo en Delphi, por favor, díganmelo para desistir de mi idea, porque llevo ya unos dias con este problema. Perdón por la parrafada, pero si quiero explicarlo no hay otro modo. Gracias por vuestro tiempo. Saludos. |
#6
|
||||
|
||||
Danos una captura de pantalla.
|
#7
|
||||
|
||||
Hola jhonalone.
Cita:
La imagen, reducida y a la que agregué unos ejes cartesianos en rojo para que puedas apreciar el centrado, es esta: Con la propiedad WindowState = wsNormal: Con la propiedad WindowState = swMaximized: Como podrás apreciar, el centro de los ejes siempre se muestra en el medio del formulario sea cual fuere el tamaño de este o la imágen. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#8
|
|||
|
|||
Bueno. ¡Algo de LUZ!
Acabo de ir a casa de mi hermano que tiene una pantalla de 22 pulgadas 16:9 y con las mismas posiciones en las barrras de desplazamiento que en la mía de 17,3 pulgadas sigue saliendo "razonablemente" centrado. Maxium. Creo que la explicación es bastante clara, estoy probando en 3 pantallas distintas, dos son 16:9 y otra 4:3 pero creo que te va a servir de poco, ver un punto (que es con lo que estoy haciendo las pruebas) en el centro de la pantalla si lo tengo centrado, o no verlo si pruebo en otra pantalla. No obstante, te agradezco tu interés, y si quieres que te mande un pantallazo, dime de qué lo quieres. Llego a la conclusión de que la aarquitectura física de la pantalla cambia las posiciones de los Scrollbar. Vamos que si quiero forzar la salida, dependiendo de las resoluciones, como había pensado, tengo que distinguir entre las pantallas 16:9 y las 4:3, ya que cada tipo de pantalla tendrá unas posiciones distintas en las barras de desplazamiento, aún cuando se representen en la misma resolución. Que pena que no haya nada en Delphi que resuelva esta cuestión. Gracias por vuestro interés. Gracias por tu interés. Nuevamente. |
#9
|
|||
|
|||
Vale, Ecfisa.
Te conozco desde hace años y me has alucinado con tus respuestas muuuchas veces. Creo que te he comentado que tienes respuestas para todo y lo he comprobado, personalmente, y con otros posts en el foro. Tus dibujos están "razonablemente" centrados en tu post. Digo razonablemente, porque, en mi pantalla 4:3 con resolución de 800x600, que es en la que me siento más cómodo trabajando, la mitad de la izquierda mide (en wsMaximized) 27,5cm. La mitad de la derecha, en mi pantalla, mide 25,5cm. La solución, me podría "valer". Digo con comillas, porque yo soy excesivamente meticuloso. Quizá habría que probarla con distintas resoluciones y en distintas pantallas, Por favor, díme como has implementado el código que me sugeriste, porque, cuando yo lo probé, después de implementar el procedimiento y llamarlo desde FormXX.OnShow, no observé el efecto que tú me presentas. Gracias. Ecfisa. |
#10
|
||||
|
||||
Hola jhonalone.
Aunque funciona igual, no había visto que había un ScrollBox de por medio , por lo que cambié el evento OnResize del form por el del ScrollBox y ajusté el ScrollBox alClient para poder visualizar el comportamiento cuando el form cambia de tamaño. Básicamente el código es este: Creo que te va a ser util que te adjunte los fuentes de la prueba así podes revisarla sobre tu monitor, yo lo hice hasta 1366 x 768 y centra correctamente la imágen ( adjunto ). No sé si será factible centrar también los ScrollBar, voy a revisar un poco mas ese punto a ver si se le puede encontrar la vuelta. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#11
|
|||
|
|||
Cita:
Ya me extrañaba a mí que algún código tuyo no funcionara. Sería la primera vez desde que te conozco. He probado tu adjunto y funciona. La medición de la pantalla que te comentaba, no tiene nada que ver con el programa en funcionamiento. Centra la imagen. Lo he implementado en mi proyecto y funciona igual. He comprobado con distintas resoluciones y también funciona. No obstante, tiene un pequeño inconveniente: las barras de desplazamiento. Habrá que centrarlas porque si no no se ve toda la imagen completa (como ya habrás observado), pero no basta con asignar la mitad del tamaño de la imagen, hará falta algo más. Estoy probando con tu adjunto, que es más fácil de manejar que mi proyecto. Si encuentro algo, te comento. Un Saludo. |
#12
|
|||
|
|||
¡¡¡CREO QUE TENGO LA SOLUCIÓN!!!
No busquéis más. Cuando afine y compruebe el código, lo subo en un adjunto. Saludos. |
#13
|
|||
|
|||
Hola, amigos.
Creo que he resuelto la cuestión. Bastante mejor de lo que me esperaba.Sin utilizar las barras de desplazamiento, pulsando con el botón izquierdo del ratón y arrastrando la imagen por la pantalla. Y originalmente, aparece CENTRADA. Dejo un [ATTACH]archivo[/ATTACH] en .zip por si alguien está interesado en el asunto. Gracias a todos por vuestro tiempo y paciencia. Especialmente a Ecfisa, cuyo tiempo vale muchiiiisimo y cuya ayuda me ha sido muy provechosa. Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Centrar imagen en un formulario en delphi | socosa | Varios | 6 | 27-11-2014 12:13:12 |
Cuando pongo un formulario en maximizado se desforman los botones con delphi 7 | jeremiselxi | Varios | 2 | 20-09-2012 06:12:48 |
!!Abrir formulario Maximizado!! | Darkseratul | Varios | 14 | 12-03-2011 18:39:00 |
Como centrar un formulario de c++ builder | kizé | C++ Builder | 2 | 06-01-2011 07:41:25 |
Centrar titulo en formulario | alfredosg19 | Varios | 1 | 03-03-2005 17:16:04 |
|