Problema del lenguaje C

1. Diseño y proceso del algoritmo

1. Puntos

No importa qué tipo de gráfico sea en la pantalla, está compuesto por píxeles de diferentes colores. Para mejorar la eficiencia de visualización de los gráficos, no se utiliza la función de dibujo de puntos del sistema, pero se utiliza la tecnología de escritura de pantalla directa en modo 640*480*16 para dibujar puntos. La pantalla de escritura directa en este modo es mejor que esa. de 320*200*256 Es mucho más complicado escribir directamente en la pantalla. El búfer de vídeo de este último se direcciona linealmente, y un byte corresponde al color de un punto en la pantalla, mientras que el búfer de vídeo del primero. se divide en cuatro planos de bits, y el color de un punto en la pantalla está determinado por cada uno. Está determinado por un número binario de cuatro dígitos compuesto por un bit en el plano de las unidades. Desde el rango máximo de representación del binario de cuatro dígitos. El número es 16, se pueden mostrar hasta 16 colores simultáneamente en este modo.

Al leer y escribir el búfer de video, se escribe byte a byte. Cuando solo se necesita uno de los bits, se debe usar una máscara de bits para enmascarar otros bits. La máscara de bits simplemente configúrala. registro de máscara de bits del registro de control de gráficos. Primero, escriba el número de índice 8 del registro de máscara de bits en el registro de índice con número de puerto 0x3ce y luego escriba el valor de máscara de bits en el registro con número de puerto 0x3cf. Después de configurar la máscara de bits, escribir el color directamente en la posición correspondiente en el búfer de video es la función de dibujo de puntos.

Obtener un punto de color en la pantalla es en realidad la operación inversa a dibujar un punto. Dibujar un punto es asignar un valor de color binario de cuatro bits a planos de cuatro bits, mientras que tomar un punto de color es. para dividir los planos de cuatro bits. Los colores se combinan en un número binario de cuatro dígitos.

2. Línea

Una línea en realidad está compuesta de puntos Cambiando continuamente las coordenadas de los puntos, se puede obtener una línea. Entonces, la función de dibujar una línea es, en última instancia, cómo cambiar las coordenadas del punto de dibujo.

El dibujo lineal generalmente usa el algoritmo DDA y el algoritmo BRESENHAM. Este algoritmo se implementa fundamentalmente a través de la relación múltiple entre líneas horizontales y líneas verticales. Después de cada ciclo de dibujo de puntos, las coordenadas del mayor desplazamiento en xey cambian en una unidad, y cuando el número de ciclos es múltiplo de dos, las coordenadas del pequeño desplazamiento en xey cambian en una unidad. Para que la función de dibujo lineal se dibuje en ocho direcciones, todos los incrementos negativos se convierten en incrementos positivos.

Los programas de dibujo suelen utilizar funciones como moveto y lineto, que se utilizan para mover puntos a un punto determinado o dibujar una línea desde el punto actual hasta un punto determinado. Para simular estas funciones, hay dos globales. Las variables SX y SY se configuran como destino de Moveto() y las coordenadas iniciales de Drawlineto().

3. Rectángulo y rectángulo relleno

El rectángulo se dibuja mediante líneas diagonales determinadas por dos puntos. Simplemente conecta las coordenadas de cada punto directamente. El rectángulo relleno se dibuja línea por línea. Este algoritmo es relativamente lento. Un mejor método es utilizar el método utilizado en Fillscreen (), que se procesa byte a byte. Solo porque dibujar un rectángulo no necesariamente comienza con un byte completo y termina con un byte completo, existen problemas al principio y al final. También los saqué y los traté por separado, pero todavía no estaban bien. Los cambiaré cuando tenga tiempo.

4. Círculos y arcos

El círculo se dibuja mediante el método de ecuaciones paramétricas. Para mejorar la velocidad, se crea una tabla para los valores de sen y cos de los ángulos, que se puede consultar directamente cuando sea necesario. Esto se debe a que cuando se utiliza el algoritmo BRESENHAM para dibujar elipses, el efecto no es muy bueno. Las elipses dibujadas no solo son diferentes en grosor, sino que tampoco están cerradas. Supongo que hay algún problema con el programa, así que también podría usar el método de ecuación paramétrica, que es simple y no presenta problemas. Normalmente soy una persona vaga.

Arco se utiliza principalmente para dibujar rectángulos redondeados y solo se pueden dibujar arcos. Esto también se dibuja usando ecuaciones paramétricas. La única diferencia con dibujar un círculo es que tiene restricciones de ángulo.

5. Curva de Bézier

La curva de Bézier es en realidad principalmente una fórmula. Es lo mismo que dibujar un círculo con una ecuación paramétrica, pero es necesario pasar más parámetros. Cuando uso el mouse para controlar, debido a que hay cuatro puntos, es un poco difícil recolectar múltiples puntos con el mouse, así que primero inicialicé una matriz de cuatro puntos y controlé tres sin presionar el botón, presionando el botón izquierdo, y presionando el botón derecho respectivamente. Haga clic y presione las teclas izquierda y derecha al mismo tiempo para determinar la siguiente curva.

De hecho, cuando utilice el mouse para dibujar una curva de Bézier, debe escribir todas las funciones de procesamiento primarias, secundarias y terciarias. Cuando presione el botón izquierdo, marque este punto. botón izquierdo nuevamente, use la función para dibujar una curva de Bézier una vez. Cuando lo presione por tercera vez, usará la función para dibujar una curva cuadrática. Cuando lo presione por cuarta vez, usará la función para. dibuja una curva cúbica. Esto elimina la necesidad de asignar un botón del mouse a cada punto.

6. Llenado

El llenado también utiliza el método de llenado de semillas, pero en lugar de llenar directamente desde la semilla, primero comenzamos desde la semilla y encontramos el límite más pequeño de la semilla a lo largo de x. Y luego Complete un punto y juzgue los puntos superior e inferior de este punto. Si no es un límite y no se ha llenado, empújelo en la pila y luego aumente x en 1 para determinar si ha alcanzado el. valor máximo de x en esta línea (es decir, el límite), como Si no, entonces la línea se procesará en un bucle hasta que alcance el límite, y luego aparecerá un punto para continuar el procesamiento del bucle. Debido a que se procesa punto por punto, la velocidad es relativamente lenta.

Para rellenar los límites de un gráfico con diferentes colores, el color del límite del gráfico no se pasa al rellenar, sino que se elimina primero el color de la semilla y, al rellenar, el siguiente. punto, el color del siguiente punto es El color se compara con el color de la semilla. Si es el mismo, se rellena con color. Si es diferente, se utiliza como borde.

7. Caracteres y caracteres chinos

Mostrar caracteres chinos en modo gráfico es en realidad una tarea problemática. Generalmente se utiliza una biblioteca de fuentes de caracteres chinos y el archivo ejecutable generado también debe tenerla. una biblioteca de fuentes. Aquí utilizo tecnología de fuentes sin caracteres chinos y los archivos generados no dependen de ningún otro archivo.

La tecnología sin fuentes consiste en crear una matriz de fuentes similar a una fuente extrayendo las fuentes de matriz de puntos chinas requeridas del archivo de fuentes. Puede mejorar enormemente la velocidad de visualización de los caracteres chinos. Al crear la matriz de fuentes, la matriz de fuentes se ordena, por lo que cuando se muestran caracteres chinos

El artículo proviene de: Haoai Learning Network () Sitio web: /bianchengyuyan/cyuyan/11968.html