Red de conocimiento informático - Problemas con los teléfonos móviles - VB realiza el efecto especial de la visualización de texto "flash-in"

VB realiza el efecto especial de la visualización de texto "flash-in"

Para los entusiastas de la programación, el procesamiento de visualización de texto es un contenido muy importante en el proceso de desarrollo de software. Su efecto de visualización tiene un gran impacto en el efecto de la interfaz del programa. Si el texto puede romper las convenciones. ser innovador y utilizar algunos métodos únicos al mostrar puede brindar a los usuarios una sensación refrescante, aumentando así la afinidad del programa. Para la programación de Visual Basic, el autor proporciona un método para realizar el efecto de visualización especial de la visualización de texto "flash-in", con la esperanza de ayudar a los lectores a ampliar sus mentes.

1. Introducción a los principios de implementación y funciones relacionadas

El llamado "flash-in" de texto se refiere a dividir el texto que se mostrará en dos partes y los caracteres en cada parte se muestra por separado desde la interfaz del programa. Los dos extremos ingresan y finalmente se muestran. El principio de su implementación es: para que se muestre una cadena, se determina artificialmente una distancia de espacio inicial entre cada carácter. Durante el proceso de visualización, la distancia se muestra simétricamente y se reduce gradualmente hasta que se alcanza el espacio entre caracteres predeterminado del sistema, logrando así el objetivo. string El efecto de "flash-in" desde ambos lados de la interfaz. Específicamente en la implementación de programación, primero debe usar la función SetTextCharacterExtra para agregar una distancia de espaciado a cada carácter de la cadena que se mostrará. El segundo es agregar un temporizador al programa. Cada vez que se activa el temporizador, use DrawTextEx para mostrar un carácter. El tercero es establecer el formato de visualización en DT_CENTER cuando se usa la función DrawTextEx, y al configurar los parámetros de estructura DRAWTEXTPARAMS de la función, establecer los valores de sus miembros iLeftMargin e iRightMargin en "0".

Durante la implementación del programa, debe declarar y utilizar las siguientes tres funciones API, que son:

1. SetTextCharacterExtra

Declarar la función SetTextCharacterExtra Lib "gdi32" Alias ​​​​"SetTextCharacterExtraA" (ByVal hdc As Long, ByVal nCharExtra As Long) As Long

Descripción: esta función se utiliza para especificar el espacio adicional insertado entre los caracteres en la cadena al dibujar texto. El parámetro hdc representa el identificador de la escena del dispositivo y nCharExtra se refiere al espacio adicional que se insertará entre caracteres (utilizando el sistema de coordenadas lógicas de la escena del dispositivo). Después de que la función se llama correctamente, devuelve un valor de tipo Largo, que se refiere a la configuración de espaciado adicional anterior de esta escena de dispositivo.

 2.DrawTextEx

Declarar función DrawTextEx Lib "user32" Alias ​​​​"DrawTextExA" (ByVal hDC As Long, ByVal lpsz As String, ByVal n As Long, lpRect As Long, ByVal un As Long, lpDrawTextParams As DRAWTEXTPARAMS) As Long

El parámetro hDC es el identificador de una escena de dispositivo en la que dibujar, lpsz es la cadena de texto que se dibujará y generará, n es el número de caracteres a dibujar, si Para dibujar la cadena completa (hasta el carácter de parada), establezca este parámetro en -1. lpRect RECT, especifica un rectángulo formateado (usando coordenadas lógicas) para dibujar, un es un bit de bandera. Determina la forma en que se realiza el dibujo, por ejemplo: DT_EDITCONTROL simula un control de varias líneas; DT_ENDELLIPSES mostrará puntos suspensivos al final si la cadena no se puede acomodar completamente en el rectángulo, etc.

lpDrawTextParams es un puntero a la estructura DRAWTEXTPARAMS, que contiene información de formato adicional.

2. Código de implementación

Ahora que entendemos los principios y métodos de implementación, comencemos a programar. Primero, inicie Visual Basic para generar una aplicación de documento único, coloque un control Temporizador en Form1 para iniciar el programa de sincronización, coloque tres controles Etiqueta, uno de los cuales se usa para mostrar información de texto y los otros dos se usan como botones para iniciar texto; pantalla y salga del programa.

Finalmente agregue el siguiente código:

Opción Explícita

' TYPE STRUCTURES

Tipo Privado tpeTextProperties

cbSize As Long

iTabLength como largo

iLeftMargin como largo

iRightMargin como largo

uiLengthDrawn como largo

Tipo de extremo

Tipo privado tpeRectangle

Izquierda mientras sea larga

Arriba mientras sea larga

Derecha mientras sea larga

Abajo mientras sea larga

Tipo final

' CONSTANTS

Const privada DT_CENTER = amp; H1

Const privada DT_VCENTER = amp H4

' DECLARACIONES API;

Función de declaración privada DrawTextEx Lib "user32" Alias ​​​​"DrawTextExA" (ByVal hdc As Long, ByVal lpsz As String, ByVal n As Long, lpRect As tpeRectangle, ByVal un As Long, lpDrawTextParams As tpeTextProperties) As Long

Función de declaración privada SetTextCharacterExtra Lib "gdi32" (ByVal hdc As Long, ByVal nCharExtra As Long) As Long

Función de declaración privada GetClientRect Lib "user32" (ByVal hwnd As Long , lpRect As tpeRectangle) Siempre

Public strCharSpace As Integer

Private Sub Form_Load()

'Llama al código del botón que realiza la función que

' queremos hacer aquí.

Llamar a cmdStart_Click

Finalizar Sub

Sub privado cmdClose_Click()

Descargar frmMain ' Descargar este formulario de la memoria

Fin ' Finalizar el programa

Fin Sub

Private Sub cmdStart_Click()

' Dibujar el texto con un gran espacio entre el char

actores

strCharSpace = 240

Llamar a doAnimationFX

' Iniciar el cronómetro

tmrProgTimer.Enabled = True

End Sub

Private Sub tmrProgTimer_Timer()

' Quita uno del valor actual del espaciado

strCharSpace = strCharSpace - 1

Llamar a doAnimationFX ' Dibujar la nueva cadena

' Verificar el valor de 'strCharSpace'

Si strCharSpace = 0 Entonces tmrProgTimer.Enabled = False

End Sub

Private Sub doAnimationFX()

' Declaraciones de alcance del procedimiento

Dim typeDrawRect As tpeRectangle

Dim typeDrawParams As tpeTextProperties

Dim strCaption As String

' Establece la cadena que será animada

strCaption = "Visual Basic Code"

' Establece el área en la que se realizará la animación tendrá lugar.

' Debe ser un control que tenga la propiedad '.hwnd'

' y pueda actualizarse y borrarse fácilmente. Entonces, una imagen

. ' box es el mejor candidato

GetClientRect picAniRect.hwnd, typeDrawRect

' Ahora establece las propiedades que se utilizarán en la animación

Con typeDrawParams

' El tamaño de la animación

.cbSize = Len(typeDrawParams)

' Los márgenes izquierdo y derecho

.iLeftMargin = 0

.iRightMargin = 0

Terminar con

' Borrar el cuadro de imagen

picAniRect.Cls

' Establecer el espaciado entre caracteres que se utilizará

SetTextCharacterExtr

a picAniRect.hdc, Val(strCharSpace)

' Dibuja la cadena de texto, en el área establecida con las

' opciones especificadas

DrawTextEx picAniRect.hdc , strCaption, Len(strCaption), _

typeDrawRect, SaveOptions, typeDrawParams

' Actualiza el cuadro de imagen que contiene la animación

picAniRect.Refresh

End Sub

Función privada SaveOptions() Mientras

' Declaración de alcance del procedimiento

Atenuar MyFlags mientras

' Establezca las opciones que se utilizarán en el FX

MyFlags = MyFlags Or DT_CENTER

MyFlags = MyFlags Or DT_VCENTER

' Almacene las banderas que hemos configurado anteriormente

SaveOptions = MyFlags

Función final

Resumen

En el artículo, el autor sólo "parpadea" simétricamente en ambos. En ambos lados del texto se presentan brevemente el principio, el método y el código de implementación del efecto de visualización. De hecho, hacer un buen uso de las funciones anteriores también puede lograr otras visualizaciones especiales, como efectos de visualización de arrastre de texto, etc. Sin embargo, debido al espacio limitado, no entraré en detalles aquí. Los lectores interesados ​​pueden contactarnos por correo electrónico (liutaomail). @ah163 .net) contáctame y solicita el código correspondiente.