Algoritmos y Programación Clase 6 - primera parte Variables tipo arreglo (Arrays): Vectores Matrices 1 Repaso Hasta ahora en el curso se estudió: La representación de algoritmos usando estructuras básicas: secuencia, selección lógica, iteración. Los tipos de datos El concepto de variable Î Almacenan un solo valor: numérico, cadena de caracteres, lógico, etc. 2 Clase 6 Arreglos Un arreglo (o array) es un conjunto de elementos que tienen el mismo tipo de dato y se identifican con un único nombre de variable. Para referirse a un determinado elemento del arreglo se utiliza un índice, que especifica su posición relativa en el arreglo. Los arreglos pueden ser de cualquier tipo de dato: numérico, alfanuméricos, lógicos, etc. A = A0 A1 A2 A3 … Ai … An-1 An 3 Clase 6 Clasificación de los arreglos Los arreglos se clasifican de acuerdo al número de dimensiones que tienen: Unidimensionales (Vectores) Bidimensionales (Matrices o Tablas) Multidimensionales (tres o más dimensiones) A0 A0,0 A0,1 … A0,n A1 A1,0 A1,1 … A1,n A2 A2,0 A2,1 … A2,n … … … Am,n Clase 6 … An … … Am,0 Am,1 4 Dimensiones y Subíndices El número de dimensiones especifican el tipo de arreglo (vector, matriz, etc.). Cada dimensión tiene un tamaño y se utiliza un subíndice para hacer referencia a una posición en esa dimensión. Los vectores utilizan un solo subíndice que especifica la posición del elemento en la dimensión: A(i) 5 Clase 6 Dimensiones y Subíndices Las matrices tienen dos dimensiones: a la primera dimensión se le llama Fila, Fila a la segunda dimensión se le llama Columna Las matrices utilizan dos subíndices: uno para las filas y otro para las columnas. A(i, j) Subíndice para columnas (segunda dimensión) Subíndice para filas (primera dimensión) 6 Clase 6 Declaración de arreglos Un arreglo se declara con la instrucción Dim: Dim Dim nombreArreglo(dimensiones) As tipoDato nombreArreglo: es el nombre de una variable tipoDato: Opcional. Es el tipo de dato del arreglo (Integer, Long, Double, Boolean, String, etc.). dimensiones: Opcional. Es una lista (separada por coma) de las dimensiones del arreglo. VB acepta hasta 60 dimensiones. Cada dimensión es de la forma: 7 límiteInferior To límiteSuperior Clase 6 Declaración de arreglos límiteInferior To límiteSuperior límiteInferior: Opcional. Es un entero (positivo o negativo) correspondiente al límite inferior del arreglo en esa dimensión. Si se omite, también se debe omitir la palabra clave To y su valor se asume cero. límiteSuperior: Requerido. Es un entero (positivo o negativo) correspondiente al límite superior del arreglo en esa dimensión. límiteSuperior debe ser mayor o igual que límiteInferior. 8 Clase 6 Declaración de arreglos Ejemplos: Dim Dim Dim Dim Dim X(1 To 10) As Single, B() As Long Y(20) As Integer, W(10, 20) As Double Z(-30 To 50) As String A(5, -4 To 10) As Boolean C(5, 5, 5, 4) As Long Observaciones: Los paréntesis (después del nombre de la variable) indican que la variable es un arreglo Cuántos elementos tiene X? y B? y A? y C? Clase 6 9 Tamaño de un arreglo El tamaño de un arreglo se define como la multiplicación de cada uno de los tamaños de las dimensiones del arreglo. El tamaño de una dimensión se calcula por la siguiente fórmula: Tamaño = límiteSuperior – límiteInferior + 1 Por ejemplo, en la declaración: Dim Z(-30 To 50) As String El tamaño del vector Z es 50 – (–30) + 1 = 81 elementos 10 Clase 6 Arreglos Estáticos Un arreglo estático es aquel que, en su declaración, se define el número de dimensiones y el tamaño de cada dimensión. Es decir, tiene un número constante de elementos. Ejemplo: Dim B(9) As Integer, A(7, 19) As Single El vector B tendrá 10 elementos de tipo entero. La matriz A tendrá 8 filas y 20 columnas, es decir, 160 elementos de tipo real simple. 11 Clase 6 Arreglos Dinámicos Un arreglo dinámico es aquel cuyo tamaño y número de dimensiones pueden cambiar. En la declaración se colocan los paréntesis vacíos. Ejemplo: Dim X() As Long, B() As String Para poder hacer referencia a un elemento del arreglo dinámico, primero de debe redimensionar la variable utilizando la instrucción ReDim, especificando el número de dimensiones y el tamaño de cada dimensión. 12 Clase 6 Arreglos Dinámicos Sintaxis de la instrucción ReDim: ReDim ReDim nombreArreglo(dimensiones) nombreArreglo: es el nombre de la variable a redimensionar. dimensiones: Requerido. Es una lista (separada por coma) de las dimensiones del arreglo. Cada dimensión es de la forma: límiteInferior To límiteSuperior límiteInferior es opcional. Si se omite se asume 0. 13 límiteSuperior es requerido. Clase 6 Arreglos Dinámicos Ejemplo: ReDim permite cambiar Dim F() As Single el número de elementos ... ó el número de dimensiones del arreglo ReDim F(50) pero NO su tipo de ... datos. F(2) = 10.52 ... ReDim F(1 To 5, 5) ... F(3, 0) = 4*F(1, 1) – 2.3 Clase 6 14 Arreglos Dinámicos ReDim inicializa cada elemento del arreglo a su valor por defecto (los numéricos a 0; String a “”; Boolean a False; etc.). ReDim Preserve permite conservar los datos del arreglo. Si utiliza la palabra clave Preserve sólo puede cambiar el tamaño de la última dimensión del arreglo y no es posible cambiar el número de dimensiones. En este caso, los elementos del arreglo no se inicializan a su valor por defecto. 15 Clase 6 Arreglos Dinámicos Ejemplo: A Dim A() As Integer ReDim A(4) A(2) = 5 ReDim A(3) A(1) = -2 A(3) = 8 K = 6 ReDim Preserve A(K) Memoria A(K) = -1 RAM Clase 6 0 A0 -02 A1 0 A2 5 8 A3 0 0 A4 0 A5 -01 A6 16 Ejemplo 1 Para un vector x de n elementos reales, hallar la suma, el promedio (μ) y la desviación estándar (σ). n σ= ∑ (x i =1 − μ) 2 i n −1 17 Clase 6 Ejemplo 1: Definición de variables Datos de entrada: N Î Tamaño del vector X Xi Î Elemento i-ésimo del vector X Datos de salida: Suma Î Suma de los elementos del vector X Prom Î Promedio de los elementos del vector Desv Î Desviación Estándar de los elementos del vector. 18 Clase 6 Ejemplo 1: Código fuente 'Declaración de variables Dim N As Integer, X() As Single, I As Integer Dim Suma As Single, Prom As Single, Desv As Single Dim Sum As Single 'Lectura de datos N = Val(InputBox("Ingrese el valor de N:")) ReDim X(1 To N) For I = 1 To N X(I) = Val(InputBox("X(" & I & ") =")) Next I 19 Clase 6 Ejemplo 1: Código fuente 'Cálculo de la Suma y Promedio Suma = 0 For I = 1 To N Suma = Suma + X(I) Next I If N > 0 Then Prom = Suma / N 'Cálculo de la Desviación Estándar Sum = 0 For I = 1 To N Sum = Sum + (X(I) – Prom) ^ 2 Next I If N > 1 Then Desv = Sqr(Sum / (N – 1)) 20 Clase 6 Ejemplo 1: Código fuente 'Mostrar resultados Text1.Text = "Vector Leído:" & vbCrLf For I = 1 To N Text1.Text = Text1.Text & "X(" & I X(I) & vbCrLf Next I Text1.Text = Text1.Text & "Suma = " & Text1.Text = Text1.Text & "Prom = " & Text1.Text = Text1.Text & "Desv = " & & ")= " & _ Suma & vbCrLf Prom & vbCrLf Desv & vbCrLf 21 Clase 6 Ejemplo 2 ⎡a1,1 ⎢a ⎢ 2,1 ⎢a3,1 ⎢ ⎢... ⎢a n,1 ⎣ Realizar un algoritmo que permita sumar dos matrices de orden nxm. a1, 2 a 2, 2 a 3, 2 ... an, 2 ... ... ... ... ... a1,m ⎤ ⎡b1,1 a 2,m ⎥⎥ ⎢⎢b2,1 a3,m ⎥ + ⎢b3,1 ⎥ ⎢ ... ⎥ ⎢... a n,m ⎥⎦ ⎢⎣bn,1 b1, 2 b2, 2 b3, 2 ... ... ... ... bn, 2 ... ... b1,m ⎤ ⎡c1,1 b2,m ⎥⎥ ⎢⎢c2,1 b3,m ⎥ = ⎢c3,1 ⎥ ⎢ ... ⎥ ⎢... bn,m ⎥⎦ ⎢⎣cn,1 c1, 2 c2, 2 ... ... c 3, 2 ... cn, 2 ... ... ... c1,m ⎤ c2,m ⎥⎥ c 3, m ⎥ ⎥ ... ⎥ cn,m ⎥⎦ 22 Clase 6 Ejemplo 2: Definición de variables Datos de entrada: N Î Número de filas M Î Número de columnas Ai,j Î Elementos de la matriz A Bi,j Î Elementos de la matriz B Datos de salida: Ci,j Î Elementos de la matriz C 23 Clase 6 Ejemplo 2: Algoritmo Inicio Leer N, M I = 1, N, 1 J = 1, M, 1 Leer Ai,j, Bi,j I = 1, N, 1 J = 1, M, 1 Ci,j = Ai,j+Bi,j Mostrar C Terminar 24 Clase 6 Función LBound Devuelve un tipo Long que contiene el subíndice más pequeño disponible para la dimensión indicada de un arreglo. Sintaxis: LBound(nombreArreglo, dimension) nombreArreglo: Requerido. Nombre del arreglo. dimensión: Opcional. Número entero que indica a qué dimensión corresponde el límite inferior devuelto. Use 1 para la primera dimensión, 2 para la segunda y así sucesivamente. Si dimensión se omite, se supone que es 1. 25 Clase 6 Función UBound Devuelve un tipo Long que contiene el mayor subíndice disponible para la dimensión indicada de un arreglo. Sintaxis: UBound(nombreArreglo, dimension) nombreArreglo: Requerido. Nombre del arreglo. dimensión: Opcional. Número entero que indica la dimensión cuyo límite superior se devolverá. Use 1 para la primera dimensión, 2 para la segunda y así sucesivamente. Si dimensión se omite, se supone que es 1. 26 Clase 6 Ejemplos: Función LBound y UBound Dim A(1 To 100, 3, -3 To 4) As Integer Instrucción LBound(A) LBound(A, 1) LBound(A, 2) LBound(A, 3) UBound(A) UBound(A, 1) UBound(A, 2) UBound(A, 3) UBound(A, 4) Valor devuelto 1 1 0 -3 100 100 3 4 Error 27 Clase 6 Instrucción Erase La instrucción Erase vuelve a inicializar (a su valor por defecto) los elementos de los arreglos estáticos y elimina los arreglos dinámicos. Sintaxis: Erase nombreArreglo nombreArreglo: nombreArreglo Requerido. Nombre del arreglo. Antes de volver a utilizar un arreglo dinámico eliminado con la instrucción Erase, se debe volver a declarar las dimensiones del arreglo con la instrucción ReDim. 28 Clase 6 Tareas Realizar un algoritmo para obtener el mayor y el menor valor de un vector A de n elementos enteros. Realizar un algoritmo para obtener el número de valores positivos, negativos y ceros de un vector W de m elementos enteros. Realizar un algoritmo que permita multiplicar dos matrices. 29 Clase 6 Algoritmos y Programación Clase 6 – segunda parte Graficación en Visual Basic: Dibujar Puntos Dibujar Líneas Dibujar Circunferencias Dibujar Elipses Dibujar Texto 30 Visualización de gráficos VB permite visualizar gráficos mediante: El Formulario (Form) El control PictureBox La Impresora (Printer) También se puede utilizar controles especializados como Hojas de Excel, Microsoft Chart, etc. 31 Clase 6 Visualización de gráficos Ejemplo: 32 Clase 6 Caso de estudio: Cómo graficar una función? Escribir un algoritmo que permita graficar la siguiente función f(x) con x∈[-1,2]: 1 1 f ( x) = + −6 2 2 ( x − 0.3) + 0.01 ( x − 0.9) + 0.04 33 Clase 6 Graficar una función: Procedimiento a seguir Para graficar f(x) se define la función a través de un subprograma. Escalar el PictureBox entre el mínimo y el máximo valor de la función en dicho intervalo. Dibujar, con una estructura repetitiva, pequeños trozos de línea para simular la forma suave de la función, con x ∈[-1,2] en pasos de 0.01 34 Clase 6 Graficar una función: Definir la función f(x) En el objeto general del Formulario, definir la función de la siguiente forma: Public Function f(x As Single) As Single f = 1 / ((x - 0.3) ^ 2 + 0.01) + _ 1 / ((x - 0.9) ^ 2 + 0.04) - 6 End Function 35 Clase 6 Graficar una función: El programa para dibujar Dim X As Single 'Escalar el PictureBox Picture1.Scale (-1, 100)-(2, -10) 'Dibujar los ejes X y Y Picture1.DrawWidth = 4 Picture1.Line (-1, 0)-(2, 0) 'Eje X Picture1.Line (0, 100)-(0, -10) 'Eje Y 'Dibujo de las líneas Picture1.DrawWidth = 1 For X = -1 To 2 Step 0.01 Picture1.Line (X, f(X))-(X + 0.01, f(X + 0.01)), _ vbBlue Next X 'Dibujar la ecuación de la función f(x) 36 Picture1.PaintPicture Picture2.Picture, 0.5, 95 Clase 6 Graficar una función: La Interfaz 37 Clase 6 Graficar una función: La Interfaz con escala 38 Clase 6 Tareas Graficar para una función f(x), los rectángulos resultantes al aplicarle el método de integración rectangular. Graficar la trayectoria (tiro parabólico) de un proyectil que es disparado con una velocidad inicial V0=20 m/s y un ángulo θ=45º. Considere, además, la resistencia del aire. V0 θ 39 Clase 6 Clase 6 Anexo Graficación en Visual Basic: Dibujar Puntos Dibujar Líneas Dibujar Circunferencias Dibujar Elipses Dibujar Texto 40 Graficar una función: Dibujar la escala Es muy conveniente dibujar las escalas de los ejes en la graficación de una función f(x). Picture1.Font.Name = "Courier New" Picture1.Font.Size = 10 Picture1.Font.Bold = True For X = -1 To 2 Step 0.5 Picture1.Line (X, 0.75)-(X, -0.75), vbBlack Picture1.CurrentY = -0.75 Picture1.CurrentX = X - Picture1.TextWidth( _ Format(X, "0.0")) / 2 Picture1.Print Format(X, "0.0") Next X 41 Clase 6 Sistema de Coordenadas El sistema de coordenadas es una cuadrícula bidimensional que define ubicaciones en la pantalla, en un formulario o en otro control. Las ubicaciones de esta cuadrícula se definen mediante las coordenadas del objeto: (X, Y) 42 Clase 6 Sistema de Coordenadas El valor de X es la ubicación del punto sobre el eje x, con la ubicación predeterminada 0 en el extremo izquierdo y creciendo de izquierda a derecha. El valor de Y es la ubicación del punto sobre el eje y, con la ubicación predeterminada 0 en el extremo superior y creciendo de arriba hacia abajo. 43 Clase 6 Sistema de Coordenadas (0, 0) Propiedad Height E j e Objeto Y (Width, Height) + Eje X Clase 6 Width Propiedad + 44 Sistema de Coordenadas La propiedad ScaleMode permite definir la unidad de medida de las coordenadas de un objeto. La unidad de medida por defecto es twip. twip Un twip es 1/20 de punto de impresora (1.440 twips = 1 pulgada y 567 twips = 1 centímetro). Otras unidades de medida: Punto, Píxel, Centímetros, Milímetros, Pulgadas, etc. Estas medidas definen el tamaño de un objeto cuando se imprime. Las distancias físicas reales dentro de la pantalla varían de acuerdo con el tamaño de la pantalla. 45 Clase 6 Modificar el Sistema de Coordenadas: Método Scale El método Scale permite definir un sistema de coordenadas personalizado. La sintaxis es: objeto.Scale (x1,y1)-(x2,y2) objeto Î Un objeto Form, PictureBox o Printer. x1, y1 Î Valores Single que indican las coordenadas horizontal (eje x) y vertical (eje y) que definen la esquina superior izquierda del objeto. x2, y2 Î Valores Single que indican las coordenadas horizontal (eje x) y vertical (eje y) que definen la 46 esquina inferior Clase derecha del objeto. 6 Método Scale objeto.Scale (x1,y1)-(x2,y2) (x1, y1) Objeto (x2, y2) Clase 6 47 Método Scale: Ejemplo Picture1.Scale (-100,100)-(100,-100) (-100, 100) Centro relativo de coordenadas Picture1 (0, 0) (100, -100) Clase 6 48 Métodos Gráficos VB proporciona varios métodos para la creación de gráficos: Cls: Cls Borra todos los gráficos y texto Print: Print Presenta texto PSet: PSet Establece el color de un píxel individual Point: Point Devuelve el color de un punto específico Line: Line Dibuja una línea, un rectángulo o un cuadro relleno Circle: Circle Dibuja un círculo, una elipse o un arco PaintPicture: PaintPicture Dibuja gráficos en ubicaciones arbitrarias 49 Clase 6 Propiedades Gráficas Las propiedades gráficas son algunas propiedades que de una forma u otra actúan en conjunto con los métodos gráficos: CurrentX: CurrentX (Single) Devuelve o establece la coordenada horizontal para el siguiente método gráfico o de impresión. No disponible en tiempo de diseño. CurrentY: CurrentY (Single) Devuelve o establece la coordenada vertical para el siguiente método gráfico o de impresión. No disponible en tiempo de diseño. AutoRedraw: AutoRedraw (Boolean) Devuelve o establece el resultado de un método gráfico como gráfico persistente. Un gráfico persistente es un gráfico que no se “borra” cuando se 50 cubre con otra ventana. Clase 6 Propiedades Gráficas DrawWidth: DrawWidth (1 a 32767) Devuelve o establece el ancho de línea para el resultado de los métodos gráficos. El valor predeterminado es 1, es decir, un píxel de ancho. DrawStyle: DrawStyle (0 a 6) Devuelve o establece un valor que determina el estilo de línea del resultado de métodos gráficos. Sólo tiene efecto si DrawWidth = 1. Estilos: Sólido (vbSolid o 0): Raya (vbDash o 1): Punto (vbDot o 2): Raya-Punto (vbDashDot o 3): Raya-Punto-Punto (vbDashDotDot o 4): Transparente (vbInvisible o 5) y Interior Sólido (vbInsideSolid o 51 6) Clase 6 Propiedades Gráficas ForeColor: ForeColor (Long) Devuelve o establece el color de primer plano utilizado para mostrar texto y gráficos en un objeto. FillColor: FillColor (Long) Devuelve o establece el color usado para llenar círculos y cuadros creados con los métodos gráficos Circle y Line. FillStyle: FillStyle (0 a 7) Devuelve o establece el patrón usado para llenar los círculos y los cuadros creados con los métodos gráficos Circle y Line. 52 Clase 6 Propiedades Gráficas Patrones propiedad FillStyle: Sólido (vbFSSolid o 0): Transparente (vbFSTransparent o 1): Línea horizontal (vbHorizontalLine o 2): Línea vertical (vbVerticalLine o 3): Diagonal hacia arriba (vbUpwardDiagonal o 4): Diagonal hacia abajo (vbDownwardDiagonal o 5): Cruz (vbCross o 6): Cruz diagonal (vbDiagonalCross o 7): BackColor: BackColor (Long) Devuelve o establece el color de fondo de un objeto. 53 Clase 6 Método Cls Borra los gráficos y el texto generados en tiempo de ejecución de los controles Form o PictureBox. Sintaxis: objeto. objeto Cls Cls no borra los gráficos y texto colocados mientras la propiedad AutoRedraw es True si AutoRedraw se establece a False antes de llamar a Cls. Cls Para borrar todo asigne Nothing a la propiedad Picture: Picture Set objeto. objeto Picture = Nothing Después de llamar a Cls, Cls las propiedades CurrentX y 54 CurrentY del objeto se restablecen a 0. Clase 6 Método PSet Establece un punto de un objeto Form, PictureBox o Printer a un color especificado. Sintaxis: objeto. objeto Pset (X,Y), color (X,Y): Requerido. Valores de tipo Single que indican las coordenadas del punto que se va a dibujar. Color: Color Opcional. Valor entero de tipo Long que indica el color especificado para el punto. Cuando se ejecuta PSet, PSet las propiedades CurrentX y CurrentY se establecen al punto especificado por los argumentos (X, Y). Clase 6 55 Método PSet: Ejemplo Picture1.PSet (50,50), vbRed (-100, 100) Picture1 (100, -100) Clase 6 56 Método Point Devuelve, como un valor de tipo Long, el color rojo-verdeazul (RGB) del punto especificado de un objeto Form o un control PictureBox. Sintaxis: objeto. objeto Point (X,Y) (X,Y): Requerido. Valores de tipo Single que indican las coordenadas del punto. Si el punto definido por las coordenadas X e Y está fuera del objeto, el método Point devuelve -1. 57 Clase 6 Método Line Permite dibujar líneas y rectángulos. Sintaxis: objeto. objeto Line (X1,Y1)-(X2,Y2),color,BF (X1,Y1): (X1,Y1) Opcional. Coordenada del punto inicial para la línea. Si se omite, la línea empieza en la posición indicada por CurrentX y CurrentY. CurrentY (X2,Y2): (X2,Y2) Requerido. Coordenada del punto final para la línea. color: color Opcional. Color de la línea. Si se omite, se usará el valor de la propiedad ForeColor. ForeColor 58 Clase 6 Método Line B: Opcional. Si se incluye, hace que se dibuje un cuadro usando las coordenadas para especificar las esquinas opuestas del cuadro. F: Opcional. La opción F especifica que el cuadro se llena con el mismo color utilizado para dibujar el cuadro. No puede usar F sin B. Si se utiliza B sin F, el cuadro se llena con los valores actuales de FillColor y FillStyle. FillStyle Cuando se ejecuta Line, Line las propiedades CurrentX y CurrentY se establecen al punto final especificado por los argumentos (X2, Y2). 59 Clase 6 Método Line: Ejemplo Form1.Line (0,0)-(100,100),vbRed Form1.PSet (-100,0),vbBlue (-100, 100) Form1.Line -(0,0),vbGreen Form1.Line -(50,-50),vbBlack,B Form1.Line -(25,100),vbRed,BF Form1.FillStyle = vbFSSolid Form1.Line (-10,10)-(-50,50), _ vbBlack,B (100, -60 100) Clase 6 Método Circle Dibuja un círculo, una elipse o un arco en un objeto. Sintaxis: objeto. objeto Circle (X,Y),r,color,inic,fin,asp (X,Y): Requerido. Coordenada del punto central para el círculo, elipse o arco. r: Requerido. Radio del círculo, elipse o arco. color: color Opcional. Color del contorno del círculo. Si se omite, se usará el valor de la propiedad ForeColor. ForeColor inic: inic Opcional. Cuando se dibuja un arco o un círculo o una elipse parcial, inic especifica (en radianes) la posición de inicio del arco. El intervalo es de -2π radianes a 2π radianes. El valor predeterminado para inic es 0 radianes. 61 Clase 6 Método Circle fin: fin Opcional. Cuando se dibuja un arco o un círculo o una elipse parcial, fin especifica (en radianes) la posición de fin del arco. El intervalo es de -2π radianes a 2π radianes. El valor predeterminado para fin es 2π radianes. asp: asp Opcional. Indica la relación entre el diámetro vertical y el diámetro horizontal. El valor predeterminado para asp es 1, lo que produce un círculo perfecto (no elíptico). El método Circle siempre dibuja en dirección contraria a las agujas del reloj (positiva). 62 Clase 6 Método Circle Cuando dibuja un círculo o una elipse parcial, si inic es negativo, Circle dibujará un radio hasta inic y tratará el ángulo como positivo; si fin es negativo, Circle dibujará un radio hasta fin y tratará el ángulo como positivo. Cuando se ejecuta Circle, Circle las propiedades CurrentX y CurrentY se establecen al punto central especificado por los argumentos (X, Y). 63 Clase 6 Método Circle: Ejemplo Form1.Circle (0,0),50,vbRed Form1.Circle (0,0),50,vbBlue,,,0.5 Form1.Cls (-100, 100) Form1.Circle (0,0),50,vbRed, _ 0, 3.1416 Form1.FillColor = vbYellow Form1.FillStyle = vbFSSolid Form1.Circle (0,0),25,vbRed, _ -0.000001, _ -1.5708 (100, -64 100) Clase 6 Método Print Dibuja texto en un objeto Form, PictureBox o Printer. Sintaxis: objeto. objeto Print texto poscar texto: texto Opcional. Texto que se desea imprimir. poscar: poscar Opcional. Especifica el punto de inserción del carácter siguiente. Utilice un punto y coma (;) para situar el punto de inserción inmediatamente a continuación del último carácter mostrado. Utilice una coma (,) para situar el punto de inserción al principio de la siguiente zona de impresión (cada 14 columnas). Si se omite poscar, poscar el carácter siguiente se imprimirá en la línea siguiente. En cada siguiente línea se restablece la propiedad CurrentX a 0. 65 Clase 6 Método Print El método Print comienza a imprimir a partir del valor de las propiedades CurrentX y CurrentY. CurrentY De forma predeterminada, el método Print imprime el texto y pasa a la línea siguiente. Si no hay texto, Print simplemente salta una línea. Después de ejecutar el método Print, Print las propiedades CurrentX y CurrentY cambian a la siguiente posición de impresión (La siguiente posición de impresión depende del tipo, tamaño y estilo de la fuente utilizada en el objeto). 66 Clase 6 Método Print: Ejemplo Form1.Scale(-100,100)-(100,-100) Form1.Print "Visual Basic" Form1.Print (-100, 100) Form1.Print "Pi = "; Form1.Print 4*Atn(1) Form1.ForeColor = vbMagenta Form1.CurrentX = -100 Form1.CurrentY = 100 Form1.Print vbCrLf & "e=", _ 2.71828182845905 Form1.Cls Form1.Print "Hola" e= 2.718281828 Hola Visual Basic Pi = 3.14159265358 (100, -67 100) Clase 6 Método TextHeight Devuelve el alto de una cadena de texto tal y como se imprimiría con la fuente actual de un objeto Form, PictureBox o Printer. Sintaxis: objeto. objeto TextHeight(texto) texto: texto Requerido. Una cadena para la que se quiere determinar el alto del texto. Debe ir entre paréntesis. Si el texto contiene retornos de carro, TextHeight devuelve el alto de las líneas acumuladas, incluyendo el espacio que hay por encima y por debajo de cada línea. TextHeight retorna un valor negativo si el eje Y aumenta de 68 abajo hacia arriba, de lo contrario, retorna un valor positivo. Clase 6 Método TextWidth Devuelve el ancho de una cadena de texto tal y como se imprimiría con la fuente actual de un objeto Form, PictureBox o Printer. Sintaxis: objeto. objeto TextWidth(texto) texto: texto Requerido. Una cadena para la que se quiere determinar el ancho del texto. Debe ir entre paréntesis. Si el texto contiene retornos de carro, TextWidth devuelve el ancho de la línea más larga. TextWidth retorna un valor negativo si el eje X aumenta de derecha a izquierda, de lo contrario, retorna un valor positivo. 69 Clase 6 Método Print: Ejemplo 2 Form1.Scale(-100,100)-(100,-100) Form1.Font.Name = "Courier New" (-100, 100) Form1.Font.Size = 20 Form1.Font.Bold = True Msg = "ABCDEFG" Form1.Print Msg Form1.Cls X = -Form1.TextWidth(Msg)/2 Y = -Form1.TextHeight(Msg)/2 Form1.CurrentX = X Form1.CurrentY = Y Form1.Print Msg ABCDEFG ABCDEFG (100, -70 100) Clase 6 Método PaintPicture Dibuja el contenido de un archivo gráfico (.bmp, .wmf, .emf, .cur, .ico o .dib) en un objeto Form, PictureBox o Printer. Sintaxis: objeto. objeto PaintPicture imagen, x1, y1 imagen: imagen Requerido. El origen del gráfico que se va a presentar en el objeto. Debe ser la propiedad Picture de un objeto Form o control PictureBox. PictureBox x1, y1: y1 Requerido. Coordenada de destino del objeto. 71 Clase 6 Instrucción SavePicture Guarda una imagen ó gráfico en un archivo. Sintaxis: SavePicture imagen, archivo imagen: imagen Requerido. La imagen que se desea guardar. Debe ser la propiedad Picture ó Image de un objeto Form o control PictureBox. PictureBox Para guardar el gráfico producido por los métodos gráficos se utiliza la propiedad Image del objeto archivo: archivo Requerido. El nombre del archivo gráfico. Puede incluir la ruta. El gráfico se guarda en formato BMP (Mapa de Bits). 72 Clase 6 Trabajar con Colores Un color se representa mediante un entero de tipo Long y este valor tiene el mismo significado en todos los contextos en los que se especifica un color. Hay cuatro maneras de especificar un valor de color en tiempo de ejecución: Usar la función RGB Usar la función QBColor Usar una de las constantes intrínsecas de VB Escribir un valor de color directamente (un número entre 0 y 16777215 (&HFFFFFF)) 73 Clase 6 Función RGB Devuelve un número entero tipo Long que representa un valor de color RGB. Sintaxis: RGB(red, green, blue) red: red Requerido. Un número en el intervalo [0,255] que representa el componente rojo del color. green: green Requerido. Un número en el intervalo [0,255] que representa el componente verde del color. blue: blue Requerido. Un número en el intervalo [0,255] que representa el componente azul del color. 74 Clase 6 Función QBColor Devuelve un tipo Long que representa el código de color RGB correspondiente al número de color especificado. Sintaxis: QBColor(num) num: num Requerido. Un número en el intervalo [0,15] que representa un color según la siguiente tabla: 0: Negro 6: Amarillo 1: Azul 7: Blanco 2: Verde 8: Gris 3: Aguamarina 9: Azul claro 4: Rojo 10: Verde claro 5: Fucsia 11: Aguamarina claro 12: Rojo claro 13: Fucsia claro 14: Amarillo claro 15: Blanco brillante 75 Clase 6 Constantes de Colores VB define las siguientes constantes de colores: Constante Valor Color vbBlack vbRed vbGreen vbYellow vbBlue vbMagenta vbCyan vbWhite 0 255 (&HFF) 65280 (&HFF00) 65535 (&HFFFF) 16711680 (&HFF0000) 16711935 (&HFF00FF) 16776960 (&HFFFF00) 16777215 (&HFFFFFF) 76 Clase 6