Sei sulla pagina 1di 21

Universidad Privada Telesup Facultad de Ingeniera Departamento de Ingeniera de sistemas Curso: Desarrollo de Aplicaciones Tema: Darwing

Nombre del estudiante: Eduardo Felix Bruno Quispe

INDICE

1.0 2.0 3.0 4.0 5.0 6.0

Introduccin... 03 - 04 Pg. CAPITULO I....05 - 07 Pg. CAPITULO II.07-12 Pg. CAPITULO III .13-19 Pg.

CONCLUSIONES..20 Pg. ANEXOS......21 Pg.

GDI+

Introduccin

Para pintar los grficos, incluyendo texto, as como mostrar los elementos que componen una interfaz de usuario, Windows utiliza la Interfaz de Dispositivos Grficos (Graphics Device Interface), la cual se encarga de llamar a las rutinas de los distintos gestores del dispositivo (drivers de video, de impresora, y de trazadores grficos) que son los que directamente actan sobre el dispositivo. Dicho de otra forma, la interfaz de dispositivos grficos es el medio que Windows proporciona para dibujar sobre dispositvos grficos. Servicios de GDI+ Los servicios de GDI+ se engloban en tres amplias categoras: grficos Vectoriales 2D, imgenes y tipografa. Los grficos vectoriales estn relacionados con el dibujo de tipos primitivos (como lneas, curvas y figuras) que se especifican mediante conjuntos de puntos en un sistema de coordenadas. Por ejemplo, una lnea recta puede establecerse con dos puntos: los que definen sus extremos, y un rectngulo mediante un punto que indique la ubicacin de su esquina superior izquierda y un par de valores que indiquen el ancho y el alto. Un polgono puede especificarse a travs de una matriz de puntos que se conectarn empleando lneas rectas para formar dicha figura. Una lnea flexible es aquella que puede trazarse por cuatro puntos de control. Para realizar estos grficos vectoriales, GDI+ proporciona clases y Estructuras que realmente realizan el dibujo. Por ejemplo, la estructura Rectangle almacena la ubicacin y el tamao del rectngulo; la clase Pen guarda informacin sobre el color, ancho y estilo de lnea; la clase Brush almacena informacin acerca del color de fondo; y la clase Graphics proporciona los mtodos para dibujar lneas, rectngulos, trazados y otras figuras.

Finalmente, la tipografa se ocupa de la presentacin de texto en diversas Fuentes, tamaos y estilos. La clase Graphics es la base de la funcionalidad proporcionada por GDI+; es decir, es la clase que realmente dibuja lneas, curvas, figuras, imgenes y texto. Es importante mencionar que, antes de empezar a dibujar, se debe elegir la Superficie, el tipo de formas y los instrumentos que que usarn para llevar a cabo la tarea. La superficie estar representada por un objeto Graphics, y sus mtodos permitirn dibujar todas las formas bsicas. GDI+ tambin proporciona la clase Bitmap para mostrar, manipular y Guardar mapas de bits. Todos los servicios de GDI+ son suministrados por un amplio conjunto de Clases, estructuras y enumeraciones agrupadas en los siguientes espacios de nombres: System.Drawing. Proporciona acceso a los mtodos grficos bsicos de GDI+. System.Drawing.Drawing2D. Proporciona mtodos grficos vectoriales y bidimensionales avanzados bsicos de GDI+. Por ejemplo, incluye los pinceles degradados, la clase Matrix utilizada para definir transformaciones geomtricas, y la clase GraphicsPath que permite conectar series de lneas y curvas. System.Drawing.Imaging. Proporciona mtodos para manipular imgenes avanzadas. System.Drawing.Text. presentacin del texto. Proporciona mtodos para manipular la

System.Drawing.Printing. Proporciona servicios relacionados con la impresin.

Captulo I

System.Drawing Las clases y estructuras ms importantes del Namespace System.drawing son: Estructura
CharacterRange

Descripcin
Especifica un intervalo de posiciones de caracteres en una cadena.

Color

Representa un color ARGB.

Point

Representa un par ordenado de coordenadas x e y de enteros que define un punto en un plano bidimensional.

PointF

Representa un par ordenado de coordenadas x e y de punto flotante que define un punto en un plano bidimensional.

Rectangle

Almacena un conjunto de cuatro enteros que representan la posicin y tamao de un rectngulo. Para las funciones de regin ms avanzadas, utilice un objeto Region.

RectangleF

Almacena un conjunto de cuatro nmeros de punto flotante que representan la posicin y tamao de un rectngulo. Para las funciones de regin ms avanzadas, utilice un objeto Region.

Size

Almacena un par de enteros ordenados, normalmente el ancho y el alto de un rectngulo.

SizeF

Almacena un par de nmeros de punto flotante ordenados, normalmente el ancho y el alto de un rectngulo.

Delegado
Graphics.DrawI mageAbort

Descripcin
Proporciona un mtodo de devolucin de llamada para decidir cundo el mtodoDrawImage debe cancelar anticipadamente la ejecucin y dejar de dibujar una imagen.

Graphics.Enumer ateMetafileProc

Proporciona un mtodo de devolucin de llamada para el mtodo EnumerateMetafile.

Image.GetThumb nailImageAbort

Proporciona un mtodo de devolucin de llamada para decidir cundo el mtodoGetThumbnailImage debe cancelar anticipadamente la ejecucin.

Enumeracin
ContentAlignment

Descripcin
Especifica la alineacin del contenido en la superficie de dibujo.

CopyPixelOperation

Determina cmo el color de origen en una operacin de copiar pxeles se combina con el color de destino para que se genere el color final.

FontStyle

Especifica la informacin de estilo que se aplica al texto.

GraphicsUnit

Especifica la unidad de medida de unos datos concretos.

KnownColor

Especifica los colores del sistema conocidos.

RotateFlipType

Especifica la direccin de giro de una imagen y el eje que se utiliza para voltearla.

StringAlignment

Determina la alineacin de una cadena de texto en relacin con el rectngulo de diseo correspondiente.

StringDigitSubstitute

La enumeracin StringDigitSubstitute especifica cmo sustituir los dgitos de una cadena segn la configuracin regional o el idioma del usuario.

StringFormatFlags

Especifica la informacin de diseo y de presentacin de las cadenas de texto.

StringTrimming

Especifica cmo recortar los caracteres de una cadena que no caben por completo en una forma de diseo.

StringUnit

Especifica la unidad de medida de una cadena de texto.

Para trabajar con el GDI+ es imprescindible comprender la clase Graphics. Que proporciona metodos para dibujar en la pantalla, como rectangle y point. Por eso se estudia en primer lugar. Posteriormente se explica las clases y estructura ms utilizadas en GDI+.

Capitulo II Clases y Estructuras de Namespace System.drawing La clases Graphics Casi todas las componentes y contenedores de Swing tienen un mtodo paint (g) asociado que sirve para dibujarlos en pantalla. Java invoca este mtodo automticamente cuando tiene que mostrar, de forma estndar, la componente o contenedor en cuestin (esto es, sus bordes, su ttulo, si lo tiene, etc.) El mtodo paint (g) se redefine cuando se quiere que estos elementos tengan un aspecto particular, por ejemplo, cuando se quiere dibujar algo especfico sobre ellos. El mtodo paint (g) es de la forma

Public void paint (Graphics g) { ... } Donde g es un objeto de la clase abstracta Graphics. Todo contenedor o componente que se pueda dibujar en pantalla tiene asociado un objeto g de esta clase, con la informacin sobre el rea de la pantalla que el contenedor o la componente cubre. Adems, el objeto g dispone de mtodos para hacer grficos (dibujar crculos, rectngulos, lneas, etc.) La clase Graphics se importa de awt: import java.awt.*; Cuando el mtodo paint (g) se ejecuta es porque ha sido invocado por otros mtodos, nunca invocado por nosotros, y el parmetro que usa corresponde a un objeto de la clase Graphics asociado al contenedor o componente que estemos manejando. Cuando se redefine el mtodo paint (g), siempre se comienza con una invocacin sper. Paint (g) al mtodo de la superclase, asegurando as que se dibuja la parte estndar del contenedor o componente que estemos manejando. Por ejemplo, vamos a dibujar una cara en un marco. Un marco es un elemento de la clase JFrame y para dibujar en l procedemos as: public void paint (Graphics g){ super.paint(g); //Dibujo el contorno de la cara g.setColor(Color.BLACK); g.fillOval(105, 70, 100, 100); //Dibujo de los ojos g.setColor(Color.GREEN); g.fillOval(125, 100, 10, 10); g.fillOval(175, 100, 10, 10); //Dibujo de la nariz g.drawLine(150, 100, 150, 130); //Dibujo de la boca g.drawArc(118, 120, 75, 30, 180, 180); }

Para entender lo que ha hecho el mtodo anterior hay que saber que: El sistema de coordenadas de un contenedor tiene su origen en su esquina superior izquierda. Las abscisas se incrementan hacia la derecha y las ordenadas hacia abajo. Cada punto es un pxel. En general, el dibujo de una figura (rectngulo, elipse, rectngulo redondo, etc.) se realiza dando las coordenadas de la esquina superior izquierda de un rectngulo imaginario que la contiene. Algunos mtodos de la clase Graphics para dibujar figuras son: drawLine(x1,y1,x2,y2): dibuja una lnea recta desde el punto (x1,y1) al punto (x2,y2) fillRect(x,y,ancho,alto): rellena el rectngulo que tiene su esquina superior izquierda en (x,y) y el ancho y largo dados drawOval(x,y,ancho,alto): dibuja una elipse contenida en un rectngulo imaginario cuya esquina superior izquierda est en (x,y) y tiene el ancho y largo dados fillOval(x,y,ancho,alto): rellena la elipse especificada pordrawOval (x,y,ancho,largo) drawArc(x,y,ancho,alto, inicioAngulo,barridoAngulo): dibuja parte de una elipse dentro de un rectngulo imaginario cuya esquina superior izquierda est en (x,y), tiene el largo y ancho dados, empieza a dibujar en el ngulo inicioAngulo y hace un barrido de barridoAngulo setColor(Color.red): cambia la tinta del objeto g y la pone de color rojo. La clase Color se importa de awt: import java.awt.*;

Dibujar sobre paneles Cuando se actualiza un componente, se borra su aspecto actual y seinvoca paint (g). El borrado previo puede producir parpadeo (flickering) ,por lo que a veces el mtodo paint(g) evita hacerlo. Sin embargo, la actualizacin puede necesitar hacer el borrado previo (para actualizar el fondo del componente, por ejemplo). En estos casos se invoca el mtodo paint Component (g) de la clase JComponent, que permite hacer un barrido previo, pero usando la tcnica del doble buffer para eliminar el parpadeo. En casos como los anteriores lo que se hace es redefinir el mtodo paint Component(g) en lugar del mtodo paint(g). Por ejemplo, para dibujar la cara que pintamos antes, pero sobre un (j)panel en lugar de sobre un marco, hacemos lo siguiente: Se declara la clase PanelCara que extiende la clase JPanel, como clase (privada) de la clase MarcoCara que habamos creado antes Se redefine el mtodo paintComponent(g) usando las mismas instrucciones que antes, pero llamando inicialmente a super.paintComponent(g) public void paintComponent(Graphics g) { super.paintComponent(g);...} Cuando el contenido de un marco o panel cambia, el mtodo repaint() se encarga de actualizar el contenedor y mostrarlo por pantalla, invocando implcitamente el mtodo paint(g) o paintComponent(g). Por ejemplo, para aadir un botn al marco que mostraba una cara sonriente de forma que, cuando se pulse, la cara cambie a una cara eenojada, basta hacer lo siguiente: Se aade a contentPane el botn cuyo efecto cambiar la sonrisa de la cara Se aade un atributo booleano al marco que indica si la cara sonre o no private boolean sonrie=true; Dentro del actionPerformed del boton codeamos lo siguiente: sonrie=!sonrie; repaint(); El mtodo paintComponent(g) para pintar el panel se redefine por el siguiente: public void paintComponent(Graphics g) { super.paintComponent(g); //Dibujo de la cara igual que antes, salvo la boca

10

... //Dibujo de la boca if (sonrie) g.drawArc(118, 125, 75, 30, 180, 180); else g.drawArc(118, 125, 75, 30, 180, -180); } Dibujar texto La clase Graphics permite dibujar texto, como alternativa al texto mostrado en los componentes JLabel, JTextField y JTextArea. El mtodo que permite graficar texto sobre el JFrame es: drawString(String str, int x, int y); Clase Color La clase java.awt.Color encapsula colores utilizando el formato RGB (Red, Green, Blue). Las componentes de cada color primario en el color resultante se expresan con nmeros enteros entre 0 y 255, siendo 0 la intensidad mnima de ese color y 255 la mxima. En la clase Color existen constantes para colores predeterminados de uso frecuente: black, white, green, blue, red, yellow, magenta, cyan, orange, pink, gray, darkGray, lightGray. Presentacin de imgenes Java permite incorporar imgenes de tipo GIF y JPEG definidas en ficheros. Se dispone para ello de la clase java.awt.Image. Para cargar una imagen hay que indicar la localizacin del archivo y cargarlo mediante el mtodo getImage(). Este mtodo existe en las clases java.awt.Toolkit. Entonces, para cargar una imagen hay que comenzar creando un objeto (o una referencia) Image y llamar al mtodo getImage() (de Toolkit); Una vez cargada la imagen, hay que representarla, para lo cual se redefine el mtodo paint() para llamar al mtodo drawImage() de la clase Graphics. Los objetos Graphics pueden mostrar imgenes a travs del mtodo: drawImage(). Dicho mtodo admite varias formas, aunque casi siempre hay que incluir el nombre del objeto imagen creado.

11

Clase Image Una imagen es un objeto grfico rectangular compuesto por pixels coloreados. Cada pixel en una imagen describe un color de una particular localizacin de la imagen. A continuacin, algunos mtodos de la clase Image: La clase Graphics provee el mtodo drawImage() para dibujar imgenes; este mtodo admite varias formas: - drawImage (Image I, int x, int y, ImageObserver o) - drawImage (Image I,int x,int y,int width,int height,ImageObserver o) Un ejemplo del metodo paint(Graphics G) para traer una imagen de la carpeta 12az es el siguiente: public void paint (Graphics g) { super.paint(g); Toolkit t = Toolkit.getDefaultToolkit (); Image imagen = t.getImage (imagen1.jpg); g.drawImage (imagen, 0, 0, this); }

12

Capitulo III La clase Pen

Un Pen dibuja una lnea con el ancho y el estilo especificados. Utilice la propiedad DashStyle para dibujar distintos tipos de lneas discontinuas. La lnea dibujada por un Pen se puede rellenar con diversos estilos de relleno, como colores slidos y texturas. El estilo de relleno depende del pincel o la textura que se utilice como objeto de relleno. En el ejemplo de cdigo siguiente se muestra cmo construir un Pen con un Brush y se muestran los efectos de establecer el valor de la propiedadLineJoin en Pen. Este ejemplo se aplica a los formularios Windows Forms. Pegue el cdigo en un formulario y llame al mtodo ShowLineJoin cuando controle el eventoPaint del formulario, pasando e como PaintEventArgs. private void ShowLineJoin(PaintEventArgs e) { // Create a new pen. Pen skyBluePen = new Pen(Brushes.DeepSkyBlue); // Set the pen's width. skyBluePen.Width = 8.0F; // Set the LineJoin property. skyBluePen.LineJoin = System.Drawing.Drawing2D.LineJoin.Bevel; // Draw a rectangle. e.Graphics.DrawRectangle(skyBluePen, new Rectangle(40, 40, 150, 200)); //Dispose of the pen. skyBluePen.Dispose(); }

13

La clase Brush Esta es una clase base abstracta y no se pueden crear instancias de ella. Para crear un objeto Brush, utilice clases derivadas de Brush, como SolidBrush,TextureBrush y LinearGradientBrush. Define los objetos que se utilizan para rellenar formas de grficos, por ejemplo rectngulos, elipses, grficos circulares y rutas. [TypeConverterAttribute(typeof(BrushConverter))] [LocalizabilityAttribute(LocalizationCategory.None, Readability = Readability.Unreadable)] public abstract class Brush : Animatable, IFormattable La clase Font Para crear una fuente de texto u objeto de la clase Font llamamos a su constructor, y le pasamos el nombre de la fuente de texto, el estilo y el tamao. Por ejemplo, Font fuente=new Font("TimesRoman", Font.BOLD, 12); Esta sentencia, crea una fuente de texto Times Roman, en letra negrita, de 12 puntos. Los estilos vienen datos por constantes (miembros estticos de la clase Font), Font.BOLD establece el estilo negrita, Font.ITALIC, el estilo cursiva, y Font.PLAIN, el estilo normal. Se pueden combinar las constantes Font.BOLD+Font.ITALIC para establecer el estilo negrita y cursiva a la vez. La funcin setFont de la clase Graphics establece la fuente de texto en el contexto grfico g. g.setFont(fuente);

14

La funcin getFont obtiene la fuente de texto actual de dicho contexto grfico. La funcin drawString dibuja el string guardado en el objeto texto de la clase String, y lo sita en la posicin cuyas coordenadas vienen dadas por los dos nmeros enteros que le siguen. En la siguiente porcin de cdigo, establecemos una fuente de texto, dibujamos el texto, y reestablecemos la fuente de texto por defecto, una operacin habitual que se realiza al programar un applet. Font oldFont=getFont(); Font fuente=new Font("Monospaced", Font.BOLD, 36); g.setFont(fuente); g.drawString(texto, 100, 50); g.setFont(oldFont); g.drawString(otroTexto, 100, 70); Para obtener el nombre de las fuentes de texto disponibles se escribe el siguiente cdigo String[] nombreFuentes=getToolkit().getFontList(); for(int i=0; i<nombreFuentes.length; i++){ System.out.println(nombreFuentes[i]); La clase Size Los arrays en Java son suficientes para guardar tipos bsicos de datos, y objetos de una determinada clase cuyo nmero conocemos de antemano. Algunas veces deseamos guardar objetos en un array pero no sabemos cuntos objetos vamos a guardar. Una solucin es la de crear un array cuya dimensin sea ms grande que el nmero de elementos que necesitamos guardar. La clase Vector nos proporciona una solucin alternativa a este problema. Un vector es similar a un array, la diferencia estriba en que un vector crece automticamente cuando alcanza la dimensin inicial mxima. Adems, proporciona mtodos adicionales para aadir, eliminar elementos, e insertar elementos entre otros dos existentes.

15

Crear un vector Para usar la clase Vector hemos de poner al principo del archivo del cdigo fuente la siguiente sentencia import import java.util.*; Cuando creamos un vector u objeto de la clase Vector, podemos especificar su dimensin inicial, y cuanto crecer si rebasamos dicha dimensin. Vector vector=new Vector(20, 5); Tenemos un vector con una dimensin inicial de 20 elementos. Si rebasamos dicha dimensin y guardamos 21 elementos la dimensin del vector crece a 25. Al segundo constructor, solamente se le pasa la dimensin inicial. Vector vector=new Vector(20); Si se rebasa la dimensin inicial guardando 21 elementos, la dimensin del vector se duplica. El programador ha de tener cuidado con este constructor, ya que si se pretende guardar un nmero grande de elementos se tiene que especificar el incremento de la capacidad del vector, si no se quiere desperdiciar intilmente la memoria el ordenador. Con el tercer constructor, se crea un vector cuya dimensin inicial es 10. Vector vector=new Vector(); La dimensin del vector se duplica si se rebasa la dimensin inicial, por ejemplo, cuando se pretende guardar once elementos. Aadir elementos al vector Hay dos formas de aadir elementos a un vector. Podemos aadir un elemento a continuacin del ltimo elemento del vector, mediante la funcin miembro addElement. v.addElement("uno");

16

Podemos tambin insertar un elemento en una determinada posicin, mediante insertElementAt. El segundo parmetro o ndice, indica el lugar que ocupar el nuevo objeto. Si tratamos de insertar un elemento en una posicin que no existe todava obtenemos una excepcin del tipo ArrayIndexOutOfBounds. Por ejemplo, si tratamos de insertar un elemento en la posicin 9 cuando el vector solamente tiene cinco elementos. Para insertar el string "tres" en la tercera posicin del vector v, escribimos v.insertElementAt("tres", 2); En la siguiente porcin de cdigo, se crea un vector con una capacidad inicial de 10 elementos, valor por defecto, y se le aaden o insertan objetos de la clase String. Vector v=new Vector(); v.addElement("uno"); v.addElement("dos"); v.addElement("cuatro"); v.addElement("cinco"); v.addElement("seis"); v.addElement("siete"); v.addElement("ocho"); v.addElement("nueve"); v.addElement("diez"); v.addElement("once"); v.addElement("doce"); v.insertElementAt("tres", 2);

17

La clase Image La clase Image permite cargar los siguientes tipos de imagen: .bmp, .gif, .ico, .jpg, .png, .wdp y .tiff. Cuando se muestra una imagen con varios marcos, slo se muestra el primer marco. El control Image no admite animaciones de imgenes con varios marcos. Hasta que se cargue el contenido de la imagen, las propiedades ActualWidth y ActualHeight del control se comportan como si fueran cero, dado que el contenido de la imagen se utiliza para determinar el tamao final y la ubicacin del control. En controles de tamao fijo, se pueden definir las propiedades Width y Height. Sin embargo, para conservar la relacin de aspecto del elemento multimedia, establezca la propiedad Width o Height, pero no ambas. En general, si desea especificar el tamao de una imagen representada, especifique slo Width o Height pero no ambas. Si slo especifica una, se conserva la relacin de aspecto de la imagen. De lo contrario, la imagen puede sufrir una expansin o distorsin inesperadas. Para controlar el comportamiento de expansin de la imagen, utilice las propiedades Stretch y StretchDirection. Cuando especifique el tamao de una imagen con Width o Height, tambin debe establecer DecodePixelWidth o DecodePixelHeight en el mismo tamao correspondiente. En El Ejemplo de Cdigo siguiente s Muestra de Como Construir Un Nuevo mapa de bits a partir de la ONU archivo MEDIANTE los Mtodos GetPixel ySetPixel Para volver a colorear la imagen. Also utiliza las Propiedades PixelFormat , Anchura y Altura .

18

Este EJEMPLO s ha Diseado prr utilizarlo ONU de la estafa Formulario Windows Forms Que contains Objetos Label , PictureBox y Button denominados Label1 , PictureBox1 y Button1 , respectivamente. Pegue el Cdigo en el Formulario y asocie el Mtodo Button1_Click al Evento Click del Button. Bitmap imagen1; privado void Button1_Click (System.Object sender, System.EventArgs e) { intentar { / / Recuperar la imagen. imagen1 = nuevo Bitmap ( @ "C: \ Documents and Settings \ All Users \" + @ "Documents \ My Music \ music.bmp" , verdadero ); int x, y; / / Recorrer las imgenes pxeles para restablecer color. para (x = 0; x <image1.Width; x + +) { para (y = 0, y <image1.Height, y + +) { Color de pixelColor = image1.GetPixel (x, y); Color nuevocolor = Color.FromArgb (pixelColor.R, 0, 0); image1.SetPixel (x, y, nuevocolor); } } / / Establecer el PictureBox para mostrar la imagen. PictureBox1.Image = imagen1; / / Muestra el formato de pxel de Label1. Label1.Text = "Formato de pxel:" + image1.PixelFormat.ToString (); } captura (ArgumentException) { MessageBox.Show ( "Se ha producido un error." + "Compruebe la ruta de acceso al archivo de imagen." ); } }

19

Conclusin

En este captulo se examina utilizando GDI + para dibujar grficos en las aplicaciones de Windows Forms. The Point , Tamao y rectngulo estructuras se utilizan en todo el GDI + y clases de Windows Forms para especificar las formas, ubicaciones y tamaos de objetos grficos. La clase de la clave utilizada con GDI + es el Grficos clase, que expone los mtodos y propiedades para la realizacin de las operaciones de grficos, as como para la recopilacin de informacin acerca de la pantalla. La Grficos clase utiliza otras clases para dibujar en la pantalla. El cepillo de clase y sus clases descendientes se utilizan para rellenar reas, como rectngulos o elipses. Cepillo objetos pueden ser creados en una amplia gama de colores, o pueden ser creados con distintos estilos para incubar, imgenes, grficos o caminos. El Pen clase se utiliza para dibujar lneas y formas como rectngulos. Pen objetos se pueden crear en una variedad de estilos y colores, incluso pueden ser creados a partir de una existente Brush objeto. La Grficos clase utiliza la fuente de clase para dibujar texto.

20

ANEXOS

21

Potrebbero piacerti anche