Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: aguml en 8 Junio 2013, 14:57 pm



Título: Centrado de posicion central en imagen
Publicado por: aguml en 8 Junio 2013, 14:57 pm
El titulo es un poco lioso pero a ver si puedo explicarlo. Mi aplicacion tiene un TScrollBox y dentro un TImage el cual puedo mover de posicion y la idea es que al ampliar la imagen o encogerla se mantenga el centro de la parte de la imagen que se ve con el centro del scrollbox. Tengo esto:

Código:
int centroAncho = Image2->Left / 2 + Image2->Width / 2; //Centro del ancho de la imagen
int centroAlto = Image2->Top / 2 + Image2->Height / 2; //Centro del alto de la imagen
int centroScrollAncho = ScrollBox2->Width / 2; //Centro del ancho del ScrollBox
int centroScrollAlto = ScrollBox2->Height / 2; //Centro del alto del scrollbox

Entonces se me ocurrio que si sustituyo "centroAncho" por "centroScrollAncho" y luego despejo la ecuacion para obtener Image2->Left pues ya lo tendria y lo mismo para el Top y lo hice asi:

Código:
Image2->Left = (centroScrollAncho - Image2->Width / 2) * 2;
Image2->Top = (centroScrollAlto - Image2->Height / 2) * 2;

Algo hay mal o en el despeje o en el planteamiento porque no obtengo lo que deseo.
La imagen la muevo por dentro del scrollbox y no permito que el borde inferior de la imagen suba mas arriba del borde inferior del scrollbox excepto cuando la imagen tenga un alto menor que el del scrollbox y lo mismo con el borde derecho. Le sumo el alto de la imagen y el ancho porque si es mas grande que el scrollbox y la arrastro hacia arriba su Top será negativo y creo que asi obtengo la parte visible de la imagen pero algo falla en mi planteamiento ¿podeis ayudarme con eso?