Ver Mensaje Individual
  #7  
Antiguo 11-12-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Reputación: 22
andres1569 Va por buen camino
Hola:

Conozco poco de VB y no sabía ese detalle que apunta Delphi.Com.Ar, pero ten en cuenta que los pixels de pantalla son los mismos (por supuesto), no importa el lenguaje con el que programes, lo que indica que si VB trabaja con esa resolución virtual, que te facilitaba el trabajo, luego debe dibujarlos y eso implica una conversión a pixels de pantalla.

No sé en qué medida eso es más o menos lento pero sí ten en cuenta que si trabajas con una resolución virtual mayor (en Delphi también se puede cambiar la resolución/orientación cuando se dibuja sobre un TCanvas, mediante las API's SetViewPortEx, SetMapMode ...), luego al convertirse en pixels de pantalla, puede que dos posiciones diferentes se conviertan en una misma sobre el monitor, por lo que ahí hay un cálculo innecesario, más aún si como tú dices quieres que el movimiento sea muy suave, de pixel en pixel. Me explico, pongamos las posiciones virtuales(1200, 678) y (1202, 679), puede que al convertirse en coordenadas de pantalla resulten en la misma (supongamos 300, 170), por estar muy próximas y ser una conversión de mayor a menor, por lo que estarías haciendo cálculos innecesarios.

El código que te puse arriba lo he usado a la hora de calcular desplazamientos y puesto que los pixels son siempre enteros, resulta bastante adecuado para esos menesteres el uso del procedimiento MulDiv. Otra cosa sería que trabajaras con coordenadas reales a convertir en coordenadas en pantalla, ahí no habría más remedio que echar mano de aritmética real y luego redondear con ROUND o TRUNC.

Saludos
__________________
Guía de Estilo
Responder Con Cita