Problema del sistema de coordenadas VB
{El código ha sido modificado según tu solicitud} Olvidé qué QQ tienes, así que no puedo enviarlo (necesitas el archivo de código fuente para realizar QQ)
Debes seguir el código modificado Guardar, dar puntos, jaja, 200 puntos jajaja
Lo he solucionado, puedes crear un nuevo proyecto y copiar todo el código,
Controle primero:
1. Ingrese al entorno de desarrollo VB6, abra un nuevo proyecto estándar (¿Estándar? EXE), cambie el nombre del proyecto a prjCdntDemo, el nombre de Form1 a frmMain, el título es "Demostración de coordenadas adaptativas". : Función dFindStep()", el ancho es 6150 y el alto es 4995.
2. Según el diseño de 9 controles CommandButton y 1 control PictureBox en la Figura 1, el nombre de CommandButton y las propiedades del título son: cmdXUp, ? cmdXDown, ? ; cmdXDown,?Alejar horizontalmente; cmdYUp,?Acercar verticalmente; cmdYDown,?Acercar verticalmente; cmdLeft,?Mover hacia abajo; ,?Salir; PictureBox El nombre del control es picCoordinate, la parte superior es 1020, la izquierda es 0, el ancho es 6000, la altura es 3500 y otras propiedades son valores predeterminados.
Esto es necesario, el siguiente es el código de copia,,,,
¿Privado?Declarar?Función?TextOut?Lib?"gdi32"? ¿"TextOutA"? (¿ByVal?hdc?As?Long, ByVal?x?As?Long, ByVal?y?As?Long, ByVal?lpString?As?String, ByVal?nCount?As?Long)?As?Long
¿Privado?dStartX?As?Double'Valor inicial de coordenadas físicas horizontales
Privado?dEndX?As?Double'Valor final de coordenadas físicas horizontales
Privado?dStartY?As?Double' Valor inicial vertical de coordenadas físicas
Privado?dEndY es el valor final vertical de coordenadas físicas Doble
Privado?b(100) es Doble
¿Privado?Función?dFindStep (StepMin es Doble) es Doble
Dim?dStep es Doble? Valor de comparación de búsqueda
Dim?dStepOld?As?Double
If?StepMin?=? 0?Entonces?'Si StepMin es igual a cero, devuelve cero
dFindStep?=?0
¿Salir?Función
Fin?/p> p>
¿Fin?Si
StepMin?=?Abs(StepMin)?Si es menor que cero, toma su valor absoluto
dStep?=?50?'Empezar a buscar reglas regulares de 50 secuencias de intervalos
If?StepMin?
While?StepMin?
dStepOld?=?dStep
dStep?=?dStep?/?2.5'En este punto dStep=20,2, 0.2.. .Espera
Si?StepMin?
dStepOld?=?dStep
dStep?=?dStep?/?2? 'Esto cuando dStep=10,1,0.1...etc.
Si?StepMin?
dStepOld?=?dStep
dStep? =?dStep?/?2?'En este momento dStep=5,0.5,0.05...etc
Fin?Si
Fin?Si
Wend
dFindStep?=?dStepOld?'?Porque dStep De lo contrario, si X>=50, continúe buscando hacia la derecha ¿Mientras?StepMin?>?dStep'En este momento, dStep=50,500,5000...y así sucesivamente. dStep?=?dStep?*?2?'En este momento, dStep=100,1000,10000...y así sucesivamente. Si?StepMin?>?dStep?entonces dStep?=?dStep?*?2?'En este momento dStep=200,2000,20000...etc. p> Si?StepMin?>?dStep?Then dStep?=?dStep?*?2.5'En este punto dStep=500,5000,50000... etc. Si?StepMin?>?dStep?...etc. ¿Fin?Si Fin?Si Fin dFindStep?=?dStep'regresar a dStep ¿Fin?Si Fin?Función Privado?Sub?DrawCoordinate(iCrossX?As?Integer,?iCrossY?As?Integer,?iWidth?As?Integer,?iHeight? As ?Integer,?dStartX?As?Double,?dStartY?As?Double As?Integer,?dStartX?Dim?dCdnStep?As?Double'Valor físico longitud del paso Dim?lCdnStep?As?Long ' Paso del valor de la ventana Dim?crtPosition?As?Long'Posición de coordenadas de la ventana actual Dim?UpN?As?Double?'Número máximo de fotogramas Dim ?dRemain?As?Double?'La longitud de las coordenadas físicas del primer cuadro Dim?dValue?As?Double?'La posición de las coordenadas físicas actuales Dim? Dim?i?As?Integer Dim?strTemp?As?String'El texto de coordenadas almacenado Dim?strFormat?As?String'El formato de las coordenadas texto Dim?dAltura?As?Doble?'Altura física Dim?dAncho?As?Doble?'Ancho de coordenadas físicas dAltura?= ?dEndY?dStartY dWidth=dEndX-dStartX Borrar el área de dibujo en la pantalla 'Dibujar dos ejes con flechas picCoordinate.Line?(iCrossX,?iCrossY)-(?iCrossX?+?iWidth?+?200,?iCrossY),?RGB(0,?0,?255) picCoordinate.Line?( iCrossX,?iCrossY)-(?iCrossX,?iCrossY?-?iCrossY?-?iHeight?-?200)-(iCrossX?-?30,?iCrossY?-?iHeight),?RGB(0,?0,? 255) PicCoordinate.Line?200)-(iCrossX?+?30,?iCrossY?-?iHeight),?RGB(0,?0,?255)