Sei sulla pagina 1di 44

Textos Universitarios / Serie Docencia

________________________________________________________________________

Contenido
Introduccin
Captulo 1 GDI+: La nueva Generacin en Interfases grficas
1.1 Superficies de dibujo y sistema de Coordenadas en GDI+
1.1.1 Superficies de dibujo
1.1.2 Sistemas de Coordenadas
1.2 Estructuras Esenciales
1.2.1 Puntos bidimensionales
1.2.1.1 Constructores pblicos
1.2.1.2 Campos pblicos
1.2.1.3 Propiedades publicas
1.2.1.4 Mtodos pblicos
1.2.1.5 Operadores pblicos y conversiones de tipo
1.2.1.6 Mtodos protegidos
1.2.2 Estructura Size (tamaos)
1.2.2.1 Constructores pblicos
1.2.2.2 Campos pblicos
1.2.2.3 Propiedades publicas
1.2.2.4 Mtodos pblicos
1.2.2.5 Operadores pblicos y conversin de tipos
1.2.2.6 Mtodos protegidos
1.2.3 Estructura Rectangle (rectngulos)
1.2.3.1 Constructores pblicos
1.2.3.2 Campos pblicos
1.2.3.3 Propiedades publicas
1.2.3.4 Mtodos pblicos
1.2.3.5 Operadores pblicos
1.2.3.6 Mtodos protegidos
1.2.4 Estructura Color (colores)
1.2.4.1 Campos pblicos
1.2.4.2 Propiedades publicas
1.2.4.3 Mtodos pblicos
1.2.4.4 Operadores pblicos
1.2.4.5 Mtodos protegidos
1.2.5 Clase TypeConverter
1.2.5.1 Constructores pblicos
1.2.5.2 Mtodos pblicos
1.2.6 Clase ColorConverter
1.2.6.1 Constructores pblicos
1.2.6.2 Mtodos pblicos
1.2.6.3 Mtodos protegidos
1.2.7 Clase ColorTranslator
1.2.7.1 Mtodos pblicos

3
Jenaro C. Paz
________________________________________________________________________

Captulo 2 Su primera aplicacin GDI+ para Web


2.1 Imgenes, mapas de bits y metarchivos
2.1.1 Clase Image
2.1.1.1 Propiedades pblicas
2.1.1.2 Mtodos pblicos
2.1.1.3 Mtodos protegidos
2.1.2 Imgenes de trama (bitmaps)
2.1.2.1 Clase Bitmap
2.1.2.1.1 Constructores pblicos
2.1.2.1.2 Propiedades publicas
2.1.2.1.3 Mtodos pblicos
2.1.2.1.4 Mtodos protegidos
2.1.2.2 Tipos de mapas de bits
2.1.2.3 Formatos de archivos de grficos
2.1.2.3.1 BMP (Bit MaP, mapa de bits)
2.1.2.3.2 GIF (Graphics Interchange Format, formato de intercambio de
grficos)
2.1.2.3.3 JPEG (Joint Photographic Experts Group, grupo conjunto de
expertos en fotografa)
2.1.2.3.4 EXIF (Exchangeable Image File, archivo de imagen
intercambiable)
2.1.2.3.5 PNG (Portable Network Graphics, grficos de red porttiles)
2.1.2.3.6 TIFF (Tag Image File Format, formato de archivo de imgenes
con etiquetas)
2.1.3 Clase Metafile
2.1.3.1 Constructores pblicos
2.1.3.2 Propiedades publicas
2.1.3.3 Mtodos pblicos
2.1.3.4 Mtodos protegidos
2.1.3.5 Informacin general acerca de grficos vectoriales
2.2 Tcnica para la generacin de grficos en lnea en aplicaciones Web
Captulo 3 Objetos grficos
3.1 Clase Graphics
3.1.1 Propiedades pblicas
3.1.2 Mtodos pblicos
3.1.2.1 Mtodos pblicos para el dibujo
3.1.2.1.1 Dibujando imgenes mediante una forma Web
3.1.2.1.1.1 Generacin del lienzo de dibujo definido por su color y su
tamao
3.1.2.1.1.2 Dibujando lneas sobre una lienzo
3.1.2.1.1.3 Dibujando rectngulos sobre un lienzo
3.1.2.1.1.4 Dibujando elipses y arcos sobre un lienzo
3.1.2.1.1.5 Dibujando polgonos sobre un lienzo
3.1.2.1.1.6 Dibujando curvas sobre un lienzo
3.1.2.1.1.7 Dibujando curvas Bzier sobre un lienzo

4
Textos Universitarios / Serie Docencia
________________________________________________________________________
3.1.2.1.1.8 Dibujando trazados sobre un lienzo
3.1.2.1.1.9 Dibujando iconos sobre un lienzo
3.1.2.1.1.10 Dibujando imgenes sobre un lienzo
3.1.2.1.1.11 Dibujando pasteles sobre un lienzo
3.1.2.1.1.12 Dibujando cadenas sobre un lienzo
3.1.2.2 Mtodos Pblicos para rellenar
3.1.2.2.1 Rellenando el interior de formas dibujadas en un lienzo
3.1.2.2.1.1 Rellenando curvas cerradas
3.1.2.2.1.2 Rellenando elipses
3.1.2.2.1.3 Rellenando trazos
3.1.2.2.1.4 Rellenando pasteles
3.1.2.2.1.5 Rellenando polgonos
3.1.2.2.1.6 Rellenando un rectngulo
Captulo 4 Pinceles y Plumas
4.1 Uso de pinceles en GDI+
4.1.1 La clase Brush
4.1.1.1 Mtodos pblicos
4.1.1.2 Mtodos protegidos
4.1.2 La clase SolidBrush
4.1.2.1 Constructores pblicos
4.1.2.2 Propiedades pblicas
4.1.2.3 Mtodos pblicos
4.1.2.4 Mtodos protegidos
4.1.2.5 El uso de SolidBrush en una forma Web
4.1.3 La clase TextureBrush
4.1.3.1 Constructores pblicos
4.1.3.2 Propiedades publicas
4.1.3.3 Mtodos pblicos
4.1.3.4 Mtodos protegidos
4.1.3.5 El uso de TextureBrush en una forma Web
4.1.4 La clase HatchBrush
4.1.4.1 Constructores pblicos
4.1.4.2 Propiedades pblicas
4.1.4.3 Mtodos pblicos
4.1.4.4 Mtodos protegidos
4.1.4.5 El uso de HatchBrush en una forma Web
4.1.5 La clase LinearGradientBrush
4.1.5.1 Constructores pblicos
4.1.5.2 Propiedades pblicas
4.1.5.3 Mtodos pblicos
4.1.5.4 Mtodos protegidos
4.1.5.5 El uso de LinearGradientBrush en una forma Web
4.1.6 La clase PathGradientBrush
4.1.6.1 Constructores pblicos
4.1.6.2 Propiedades pblicas
4.1.6.3 Mtodos pblicos

5
Jenaro C. Paz
________________________________________________________________________
4.1.6.4 Mtodos protegidos
4.1.6.5 El uso de PathGradientBrush en una forma Web
4.2 Uso de plumas en GDI+
4.2.1 Clase Pens
4.2.1.1 Propiedades pblicas
4.2.2 Clase Pen
4.2.2.1 Constructores pblicos
4.2.2.2 Propiedades pblicas
4.2.2.3 Mtodos pblicos
4.2.2.4 Mtodos protegidos
4.2.2.5 El uso de diferente tipo de plumas en una forma Web
4.3 Transformaciones con plumas
4.4 Transformaciones con pinceles
4.4.1 Transformaciones para TextureBrush
4.4.2 Transformaciones para LinearGradientBrush
4.4.3 Transformaciones para PathGradientBrush
4.5 Plumas y pinceles del Sistema
4.5.1 Colores del Sistema
4.5.1.1 Clase SystemColors
4.5.1.1.1 Propiedades pblicas
4.5.2 Plumas del Sistema
4.5.2.1 Clase SystemPens
4.5.2.1.1 Propiedades pblicas
4.5.3 Pinceles del Sistema
4.5.3.1 Clase SystemBrushes
4.5.3.1.1 Propiedades pblicas
Captulo 5 Fuentes y Texto
5.1 Trabajando con Fuentes
5.1.1 Clase FontFamily
5.1.1.1 Constructores pblicos
5.1.1.2 Propiedades pblicas
5.1.1.3 Mtodos pblicos
5.1.1.4 Mtodos protegidos
5.1.2 Clase Font
5.1.2.1 Constructores pblicos
5.1.2.2 Propiedades pblicas
5.1.2.3 Mtodos pblicos
5.1.2.4 Mtodos protegidos
5.1.3 Miembros de la enumeracin FontStyle
5.1.4 Miembros de la enumeracin GraphicsUnit
5.2 Trabajando con Cadenas de Caracteres
5.2.1 Dibujando Cadenas de caracteres con formato
5.2.1.1 Clase StringFormat
5.2.1.1.1 Constructores pblicos
5.2.1.1.2 Propiedades pblicas
5.2.1.1.3 Mtodos pblicos

6
Textos Universitarios / Serie Docencia
________________________________________________________________________
5.2.1.1.4 Mtodos protegidos
5.2.1.2 Alineacin y recorte de Cadenas de caracteres
5.2.1.2.1 Enumeracin StringAlignment
5.2.1.2.1.1 Miembros
5.2.1.2.2 Enumeracin StringTrimming
5.2.1.2.2.1 Miembros
5.2.1.3 Uso de tabuladores para el texto
5.2.1.4 Formato en el Texto
5.2.1.4.1 Enumeracin StringFormatFlags
5.2.1.4.1.1 Miembros
5.2.1.5 Presentacin de Texto con calidad
5.2.1.5.1 Enumeracin TextRenderingHint
5.2.1.5.1.1 Miembros
5.2.1.6 Transformando Texto

Captulo 6 Rectngulos, trazados, regiones y recortes


6.1 Dibujo y rellenado de Rectngulos
6.1.1 Enumeracin PenAlignment
6.1.1.1 Miembros
6.2 Trazados
6.2.1 Clase GraphicsPath
6.2.1.1 Constructores pblicos
6.2.1.2 Propiedades publicas
6.2.1.3 Mtodos pblicos
6.2.1.4 Mtodos protegidos
6.2.2 Recorte con Trazados
6.3 Regiones (Me falta escribir sobre esto)
6.3.1 Clase Region
6.3.1.1 Constructores pblicos
6.3.1.2 Mtodos pblicos
6.3.1.3 Mtodos protegidos
6.4 Regiones y recortado

Captulo 7 Biblioteca de Clases y la generacin de Grficas


7.1 Dibujo de Marcos y Bordes con gLibrary
7.2 Dibujo de cuatro tipos de Grficas con gImage
7.2.1 Grficas de Columnas
7.2.2 Grficas de Lneas
7.2.3 Grficas de Barra
7.2.4 Grficas de Columnas en 3D

Captulo 8 Procesamiento digital de imgenes


8.1 Introduccin
8.1.1 Bitmaps (mapas de bits)
8.1.2 Representacin vectorial de los colores
8.1.3 Clase BitmapData

7
Jenaro C. Paz
________________________________________________________________________
8.1.3.1 Constructores pblicos
8.1.3.2 Propiedades pblicas
8.1.3.3 Mtodos pblicos
8.1.3.4 Mtodos protegidos
8.2 Procesamiento de imgenes
8.2.1 Modificacin de Color
8.2.1.1 Deteccin de orillas
8.2.1.2 Escala de grises
8.2.1.3 Inversin
8.2.1.4 Brillo
8.2.1.5 Contraste
8.2.1.6 Modificacin de Colores
8.2.2 Modificacin de la Imagen
8.2.2.1 Inversin de Imagen
8.2.2.2 Reflexin de Imagen
8.2.2.3 Escalamiento
8.2.2.4 Rotacin de Imagen
8.2.2.5 Perspectiva Horizontal
8.2.2.6 Perspectiva Vertical
8.2.2.7 Inclinacin Horizontal
8.2.2.8 Inclinacin Vertical
8.2.3 generacin de efectos por Convolucin
8.2.3.1 Borrado Gaussiano (Blur)
8.2.3.2 Emboss
8.2.3.3 Sharpen
8.2.3.4 Smooth
8.2.3.5 Mean Renoval
8.2.3.6 Edge Detection Quick
8.2.3.7 Deteccin de orillas por Convolucin mtodo Sobel
8.2.3.8 Deteccin de orillas por Convolucin mtodo Prewitt
8.2.3.9 Deteccin de orillas por Convolucin mtodo Kirsh

Captulo 9 Representacin matricial de Transformaciones


9.1 Matrices
9.2 Transformaciones con Matrices
9.2.1 Transformaciones Compuestas
9.3 Clase Matriz
9.3.1 Constructores pblicos
9.3.2 Propiedades pblicas
9.3.3 Mtodos pblicos
9.3.4 Mtodos protegidos

8
Textos Universitarios / Serie Docencia
________________________________________________________________________

Introduccin1
Dentro del contexto de las nuevas Tecnologas de Microsoft, para el desarrollo de una
Aplicacin Web utilizamos

Framework.NET de Microsoft
Servidor MSSQL, para las bases de datos, tablas y procedimientos almacenados
Visual Studio.NET que es un IDE para el desarrollo de aplicaciones con
tecnologas .NET

El Framework.NET es una nueva plataforma informtica que simplifica el desarrollo de


aplicaciones en un entorno altamente distribuido como es Internet. El diseo del
Framework.NET estuvo enfocado a cumplir los objetivos siguientes:

Proporcionar un entorno coherente de programacin orientada a objetos, en el que


el cdigo de los objetos se pueda almacenar y ejecutar de forma local, ejecutar de
forma local pero distribuida en Internet o ejecutar de forma remota.
Proporcionar un entorno de ejecucin de cdigo que reduzca al mximo posible la
implementacin de software y los conflictos de versiones.
Ofrecer un entorno de ejecucin de cdigo que garantice la ejecucin segura del
mismo, incluso del creado por terceras personas desconocidas o que no son de
plena confianza.
Proporcionar un entorno de ejecucin de cdigo que elimine los problemas de
rendimiento de los entornos en los que se utilizan secuencias de comandos o
intrpretes de comandos.
Ofrecer al programador una experiencia coherente entre tipos de aplicaciones muy
diferentes, como las basadas en Windows o en el Web.
Basar toda la comunicacin en estndares del sector para asegurar que el cdigo
del Framework.NET se puede integrar con otros tipos de cdigo.

El Framework.NET contiene dos componentes principales: CLR (Common Language


Runtime) y la biblioteca de clases del Framework.NET. El CLR es el fundamento de la
tecnologa, el motor de tiempo de ejecucin. Se puede considerar como un agente que
administra el cdigo en tiempo de ejecucin y proporciona servicios centrales, como la
administracin de memoria, la administracin de subprocesos y la interaccin remota, al
tiempo que aplica una seguridad estricta a los tipos y otras formas de especificacin del
cdigo que garantizan su seguridad y solidez. De hecho, el concepto de administracin de
cdigo es un principio bsico del motor de tiempo de ejecucin.
El cdigo destinado al motor de tiempo de ejecucin se denomina cdigo administrado, a
diferencia del resto de cdigo, que se conoce como cdigo no administrado. La biblioteca
de clases, el otro componente principal del Framework.NET, es una coleccin completa
de tipos reutilizables orientada a objetos que se puede emplear para desarrollar

1
Traduccin de la referencia en lnea de MSDN (Microsoft Developer Network) por J.C. Paz
http://msdn2.microsoft.com/en-us/library/zw4w595w.aspx junio 3 de 2006

9
Jenaro C. Paz
________________________________________________________________________

aplicaciones que abarcan desde las tradicionales herramientas de interfaz grfica de


usuario (GUI) o de lnea de comandos hasta las aplicaciones basadas en las innovaciones
ms recientes proporcionadas por ASP.NET, como los formularios Web Forms y los
servicios Web XML.
El Framework.NET puede alojarse en componentes no administrados que cargan al CLR
en sus procesos e inician la ejecucin de cdigo administrado, con lo que se crea un
entorno de software en el que se pueden utilizar caractersticas administradas y no
administradas. El Framework.NET no slo provee varios hosts de tiempo de ejecucin,
sino que tambin se admite el desarrollo de hosts por parte de terceros.

Por ejemplo, ASP.NET aloja el motor de tiempo de ejecucin para proporcionar un


entorno de servidor escalable para el cdigo administrado. ASP.NET trabaja directamente
con el motor de tiempo de ejecucin para habilitar aplicaciones de ASP.NET y servicios
Web XML, que se tratan ms adelante en este tema.

Internet Explorer es un ejemplo de aplicacin no administrada que aloja el motor de


tiempo de ejecucin (en forma de una extensin de tipo MIME). Al usar Internet
Explorer para alojar el motor de tiempo de ejecucin, puede incrustar componentes
administrados o controles de Windows Forms en documentos HTML. Al alojar el motor
de tiempo de ejecucin de esta manera se hace posible el uso de cdigo mvil
administrado (similar a los controles de Microsoft ActiveX), pero con mejoras
significativas que slo el cdigo administrado puede ofrecer, como la ejecucin
semiconfiable y el almacenamiento en archivos aislado.

En la ilustracin siguiente se muestra la relacin de CLR y la biblioteca de clases con las


aplicaciones y el sistema en su conjunto. En la ilustracin se representa igualmente cmo
funciona el cdigo administrado dentro de una arquitectura mayor.

.NET Framework en contexto

Figura I.1. Framework de Microsoft

10
Textos Universitarios / Serie Docencia
________________________________________________________________________

En las secciones siguientes se describen con ms detalle las componentes y caractersticas


principales del Framework.NET.

Caractersticas del CLR

El Common Language Runtime administra la memoria, la ejecucin de subprocesos, la


ejecucin de cdigo, la comprobacin de la seguridad del cdigo, la compilacin y dems
servicios del sistema. Estas caractersticas son intrnsecas del cdigo administrado que es
ejecutado por el CLR.

Con respecto a la seguridad, los componentes administrados reciben grados de confianza


diferentes, en funcin de una serie de factores entre los que se incluye su origen (como
Internet, red empresarial o equipo local). Esto significa que un componente administrado
puede ser capaz o no de realizar operaciones de acceso a archivos, operaciones de acceso
al Registro y otras funciones delicadas, incluso si se est utilizando en la misma
aplicacin activa.

El motor de tiempo de ejecucin impone seguridad en el acceso al cdigo. Por ejemplo,


los usuarios pueden confiar en que un archivo ejecutable incrustado en una pgina Web
puede reproducir una animacin en la pantalla o reproducir una cancin, pero no puede
tener acceso a sus datos personales, sistema de archivos o red. Por ello, las caractersticas
de seguridad del motor de tiempo de ejecucin permiten que el software legtimo
implementado en Internet sea excepcionalmente rico en contenido.

Adems, el motor de tiempo de ejecucin impone la solidez del cdigo mediante la


implementacin de una infraestructura estricta de comprobacin de tipos y cdigo
denominada CTS (Common Type System, Sistema de tipos comn). CTS garantiza que
todo el cdigo administrado es auto descriptivo. Los diferentes compiladores de lenguajes
de Microsoft y de terceros generan cdigo administrado que se ajusta a CTS. Esto
significa que el cdigo administrado puede usar otros tipos e instancias administradas, al
tiempo que se aplica inflexiblemente la fidelidad y seguridad de los tipos.

Adems, el entorno administrado del motor de tiempo de ejecucin elimina muchos


problemas de software comunes. Por ejemplo, el motor de tiempo de ejecucin controla
automticamente la disposicin de los objetos, administra las referencias a stos y los
libera cuando ya no se utilizan. Esta administracin automtica de la memoria soluciona
los dos errores ms comunes de las aplicaciones: la prdida de memoria y las referencias
no vlidas a la memoria.

11
Jenaro C. Paz
________________________________________________________________________

Adems, el motor de tiempo de ejecucin aumenta la productividad del programador. Por


ejemplo, los programadores pueden crear aplicaciones en el lenguaje que prefieran y
seguir sacando todo el provecho del motor de tiempo de ejecucin, la biblioteca de clases
y los componentes escritos en otros lenguajes por otros programadores. El proveedor de
un compilador puede elegir destinarlo al motor de tiempo de ejecucin. Los compiladores
de lenguajes que se destinan al Framework.NET hacen que las caractersticas del
Framework.NET estn disponibles para el cdigo existente escrito en dicho lenguaje, lo
que facilita enormemente el proceso de migracin de las aplicaciones existentes.

Aunque el motor de tiempo de ejecucin est diseado para el software del futuro,
tambin es compatible con el software actual y el software antiguo. La interoperabilidad
entre el cdigo administrado y no administrado permite que los programadores continen
utilizando los componentes COM y las DLL que necesiten.

El motor de tiempo de ejecucin est diseado para mejorar el rendimiento. Aunque


Common Language Runtime proporciona muchos servicios estndar de motor de tiempo
de ejecucin, el cdigo administrado nunca se interpreta. Una caracterstica denominada
compilacin JIT (Just-In-Time) permite ejecutar todo el cdigo administrado en el
lenguaje mquina nativo del sistema en el que se ejecuta. Mientras tanto, el administrador
de memoria evita que la memoria se pueda fragmentar y aumenta la zona de referencia de
la memoria para mejorar an ms el rendimiento.

Por ltimo, el motor de tiempo de ejecucin se puede alojar en aplicaciones de servidor


de gran rendimiento, como Microsoft SQL Server e IIS (Servicios de Internet
Information Server). Esta infraestructura permite utilizar cdigo administrado para
escribir su lgica de negocios, al tiempo que se disfruta del rendimiento superior de los
servidores empresariales que puedan alojar al motor de tiempo de ejecucin.

Biblioteca de clases de .NET Framework

La biblioteca de clases del Framework.NET es una coleccin de tipos reutilizables que se


integran estrechamente con el CLR. La biblioteca de clases es orientada a objetos, lo que
proporciona tipos de los que su propio cdigo administrado puede derivar funcionalidad.
Esto ocasiona que los tipos de .NET Framework sean sencillos de utilizar y reduce el
tiempo asociado con el aprendizaje de las nuevas caractersticas del Framework.NET.
Adems, los componentes de terceros se pueden integrar sin dificultades con las clases
del Framework.NET.

Por ejemplo, la coleccin de clases de del Framework.NET implementan un conjunto de


interfases que se pueden usar para desarrollar sus propia coleccin de clases. stas se
combinarn fcilmente con las clases de Framework.NET.

12
Textos Universitarios / Serie Docencia
________________________________________________________________________

Como en cualquier biblioteca de clases orientada a objetos, los tipos de Framework.NET


permiten realizar diversas tareas comunes de programacin, como son la administracin
de cadenas, recopilacin de datos, conectividad a bases de datos y acceso a archivos.
Adems de estas tareas habituales, la biblioteca de clases incluye tipos adecuados para
diversos escenarios de desarrollo especializados. Por ejemplo, puede utilizar
Framework.NET para desarrollar los siguientes tipos de aplicaciones y servicios:

Aplicaciones de consola
Aplicaciones GUI de Windows (Windows Forms)
Aplicaciones de ASP.NET
Servicios Web XML
Servicios de Windows

Por ejemplo, las clases de Windows Forms son un conjunto completo de tipos
reutilizables que simplifican enormemente el desarrollo de interfaces GUI para Windows.
Si escribe una aplicacin Web Form de ASP.NET, puede utilizar las clases de Web
Forms.

Desarrollo de aplicaciones cliente

Las aplicaciones cliente constituyen lo ms parecido a una aplicacin de estilo tradicional


en la programacin basada en Windows. En este tipo de aplicaciones se muestran
ventanas o formularios en el escritorio, lo que permite al usuario realizar una tarea. Entre
las aplicaciones cliente se incluyen los procesadores de texto y las hojas de clculo,
adems de aplicaciones de negocios tales como herramientas con entrada de datos, de
informes, etctera. En las aplicaciones cliente se suelen emplear ventanas, mens,
botones y otros elementos de la interfaz grfica de usuario, y suelen tener acceso a
recursos locales como el sistema de archivos y a dispositivos perifricos como las
impresoras.

Otro tipo de aplicacin cliente es el tradicional control ActiveX (reemplazado ahora por
el control administrado de Windows Forms) implementado en Internet como una pgina
Web. Esta aplicacin es muy parecida a otras aplicaciones cliente: se ejecuta de forma
nativa, tiene acceso a los recursos locales e incluye elementos grficos.

En el pasado, los programadores creaban esas aplicaciones mediante C o C++ en


combinacin con MFC (Microsoft Foundation Classes) o con un entorno RAD (Rapid
Application Development, desarrollo rpido de aplicaciones) como Microsoft Visual
Basic. En Framework.NET se incorporan aspectos de estos productos, que siguen
existiendo, en un nico entorno de desarrollo coherente que simplifica de forma
espectacular el desarrollo de las aplicaciones cliente.

13
Jenaro C. Paz
________________________________________________________________________

Las clases de Windows Forms contenidas en Framework.NET estn diseadas para


utilizarse en el desarrollo de GUI. Puede crear ventanas, botones, mens, barras de
herramientas y dems elementos de pantalla fcilmente con la flexibilidad requerida para
adaptarse a la evolucin de las necesidades de negocio.

Por ejemplo, .NET Framework proporciona propiedades simples para ajustar los atributos
visuales asociados con los formularios. En determinadas circunstancias, el sistema
operativo subyacente no permite cambiar estos atributos directamente y, entonces,
Framework.NET vuelve a crear los formularios de forma automtica. sta es una de las
mltiples maneras en que Framework.NET integra la interfaz del programador, con lo
que la creacin de cdigo resulta ms sencilla y ms coherente.

A diferencia de los controles ActiveX, los controles de Windows Forms tienen acceso al
equipo de del usuario con semiconfianza. Esto significa que el cdigo binario o que se
ejecuta de forma nativa puede tener acceso a algunos de los recursos del sistema del
usuario (como elementos de la GUI y acceso limitado a los archivos) sin tener acceso ni
comprometer los dems recursos. Debido a la seguridad de acceso a cdigo, muchas
aplicaciones que antes era necesario instalar en el sistema de un usuario, ahora se pueden
implementar con seguridad a travs del Web. Las aplicaciones pueden tener las
caractersticas de una aplicacin local a la vez que se implementan como una pgina
Web.

Desarrollo de aplicaciones de servidor

Las aplicaciones de servidor en entornos administrados se implementan mediante hosts


de tiempo de ejecucin. Las aplicaciones no administradas alojan al CLR, que permite al
cdigo administrado controlar el comportamiento del servidor. Este modelo proporciona
todas las caractersticas de Common Language Runtime y la biblioteca de clases, adems
de obtener el rendimiento y la escalabilidad del servidor anfitrin.

En la ilustracin siguiente se muestra un esquema de red bsico donde se ejecuta cdigo


administrado en diferentes entornos de servidor. Los servidores como IIS y SQL Server
pueden realizar operaciones estndar mientras la lgica de la aplicacin se ejecuta en el
cdigo administrado.

14
Textos Universitarios / Serie Docencia
________________________________________________________________________

Cdigo administrado en el servidor

Figura I.2. Cdigo administrado

ASP.NET es el albergue que permite a los programadores utilizar Framework.NET en las


aplicaciones Web. Sin embargo, ASP.NET no es slo un albergue del motor de tiempo de
ejecucin: se trata de una arquitectura completa para el desarrollo de sitios Web y de
objetos distribuidos en Internet mediante cdigo administrado. Los formularios Web y los
servicios Web XML utilizan el IIS y ASP.NET como mecanismos de publicacin de las
aplicaciones, ambos disponen de una coleccin de clases de soporte en el
Framework.NET.

Los servicios Web XML, que constituyen una evolucin importante de la tecnologa
basada en el Web, son componentes distribuidos de aplicaciones de servidor similares a
los sitios Web. Sin embargo, a diferencia de las aplicaciones basadas en el Web, los
componentes de servicios Web XML no tienen interfaz de usuario y no estn orientados a
exploradores como Internet Explorer y Netscape Navigator. En su lugar, los servicios
Web XML constan de componentes de software reutilizables diseados para que los
utilicen otras aplicaciones, como aplicaciones cliente tradicionales, aplicaciones basadas
en el Web o, incluso, otros servicios Web XML. Como resultado, la tecnologa de
servicios Web XML est impulsando de manera rpida el desarrollo y la implementacin
de aplicaciones hacia el entorno altamente distribuido de Internet.

Si ha utilizado versiones anteriores de la tecnologa ASP, apreciar de inmediato las


mejoras que ofrecen ASP.NET y Web Forms. Por ejemplo, puede desarrollar pginas de
Web Forms en cualquier lenguaje compatible con Framework.NET. Adems, ya no es
necesario que el cdigo comparta el mismo archivo con el texto HTTP (aunque puede
seguir hacindolo, si lo prefiere). Los formularios Web se ejecutan en lenguaje mquina
nativo porque, al igual que todas las aplicaciones administradas, sacan todo el provecho
del motor de tiempo de ejecucin. En cambio, las pginas ASP no administradas siempre
utilizan secuencias de comandos e intrpretes de comandos. El desarrollo de pginas de
ASP.NET es ms rpido, ms funcional y ms sencillo que el desarrollo de pginas ASP
no administradas, porque interactan con el motor de tiempo de ejecucin como una
aplicacin administrada.

15
Jenaro C. Paz
________________________________________________________________________

El Framework.NET proporciona tambin una coleccin de clases y herramientas para


ayudar al desarrollo y uso de las aplicaciones de servicios Web XML. Los servicios Web
XML se basan en estndares como SOAP (un protocolo de llamadas a procedimientos
remotos), XML (un formato de datos extensible) y WSDL (el Lenguaje de descripcin de
servicios Web). En Framework.NET se utilizan estos estndares para fomentar la
interoperabilidad con soluciones que no son de Microsoft.

Por ejemplo, la herramienta de WSDL incluida en Framework.NET SDK puede consultar


un servicio Web XML publicado en el Web, analizar su descripcin WSDL y producir
cdigo fuente de C# o Visual Basic que la aplicacin puede utilizar para convertirse en
cliente del servicio Web XML en cuestin. El cdigo fuente puede crear clases derivadas
de las clases de la biblioteca de clases que controlan completamente la comunicacin
subyacente mediante SOAP y anlisis de XML. Aunque puede utilizar la biblioteca de
clases para usar los servicios Web XML directamente, la herramienta WSDL y las dems
herramientas incluidas en el SDK facilitan el trabajo de desarrollo con Framework.NET.

Si desarrolla y publica su propio servicio Web XML, Framework.NET proporciona un


conjunto de clases que cumplen todos los estndares de comunicacin subyacentes, como
SOAP, WSDL y XML. El uso de esas clases le permite centrarse en la lgica del
servicio, sin preocuparse de la infraestructura de comunicaciones que se requiere en el
desarrollo de software distribuido.

Por ltimo, al igual que los formularios Web en un entorno administrado, el servicio Web
XML se ejecutar con la velocidad del lenguaje mquina nativo mediante la
comunicacin escalable de IIS.

16
Textos Universitarios / Serie Docencia
________________________________________________________________________

Captulo 12
GDI+: La nueva Generacin en Interfases grficas
Comenzaremos diciendo que el GDI+ de Microsoft es la parte del los sistemas operativos
Windows XP o Windows Server 2003 que provee grficos vectoriales en dos
dimensiones, compatibilidad de imgenes y tipografa. Es tambin una mejora del GDI
incluida en los sistemas operativos de Windows anteriores a XP. GDI+ reside en un
conjunto de clases que presentan compatibilidad con la versin anterior de GDI y
mediante esta biblioteca de clases se pueden escribir aplicaciones independientes de
dispositivos, lo que permite al programador hacer llamadas a los mtodos proporcionados
por las clases de GDI+ y estos mtodos a su vez se encargan de llamar a los controladores
de dispositivos necesarios para que la aplicacin se ejecute sin problema. GDI+ est
disponible como un redistribuible para Windows NT 4.0 SP6, Windows 2000, Windows
98 y Windows Me. Para descargar el ltimo redistribuible, entre al sitio:

http://www.microsoft.com/downloads

Y haga la bsqueda de Platform SDK Redistributable: GDI+, luego baje el archivo


gdiplus_dnld.exe, el cual al momento de ejecutar le permitir escoger el rbol de
directorios a usar. Tenga en cuenta que este redistribuible nicamente ser necesario
cuando se vaya a instalar en la misma computadora un programa ejecutable que fue
elaborado haciendo uso de esta nueva tecnologa.

Adems, GDI+ es una componente del CLR (Common Language Runtime) del
Framework .NET de Microsoft. Este ultimo que es descargable gratuitamente desde:

http://msdn.microsoft.com/netframework/

Es el modelo de programacin de la plataforma .NET. Los componentes clave del


Framework.NET como se indic en la introduccin son:

Common Language Runtime (motor de ejecucin del cdigo administrado


generado por compiladores de Visual Basic .NET, C#, J# y JScript .NET)
Bibliotecas de clases unificadas (la biblioteca de clases del Framework .NET es
una biblioteca de clases, interfases y tipos de valor que se incluye en el SDK del
Framework .NET de Microsoft. Esta biblioteca brinda acceso a la funcionalidad
del sistema y es la base sobre la que se crean las aplicaciones, los componentes y
los controles del Framework .NET)
Componentes ASP.NET (ASP.NET es ms que una nueva versin de las pginas
Active Server, es una plataforma de programacin Web unificada que
proporciona los servicios necesarios para que los programadores creen

2
Traduccin de la referencia en lnea de MSDN (Microsoft Developer Network) por J.C. Paz
http://msdn.microsoft.com/library/en-us/gdicpp/GDIPlus/AboutGDIPlus/IntroductiontoGDIPlus junio 3 de
2006.

17
Jenaro C. Paz
________________________________________________________________________

aplicaciones Web para la empresa. que proporciona un modelo de programacin y


una estructura nuevos para crear aplicaciones ms seguras, escalables y estables.
A la hora de crear una aplicacin ASP.NET, se pueden utilizar formularios Web
Forms o servicios Web XML o combinarlas de la manera que ms les convenga.
Las dos caractersticas son compatibles con la misma infraestructura, que permite
utilizar esquemas de autenticacin, almacenar en cach datos que se utilizan con
frecuencia y personalizar la configuracin de la aplicacin, entre otras muchas
cosas.).

Es conveniente aclarar que hay dos versiones del Framework .Net


El Redistribuible, si desea ejecutar aplicaciones Windows en su computadora
que fueron elaboradas con esta nueva tecnologa y
La versin de Programador que incluye todo lo que los desarrolladores de
software necesitan para escribir, probar y poner en produccin aplicaciones
Framework.NET, adems incluye documentacin, ejemplos, herramientas de
lnea de comando y compiladores. Debe de instalarse primeramente el
redistribuible.

Dentro de las caractersticas para grficos de 2D, GDI+ soporta:

Compatibilidad de mezcla alfa para todos los grficos antiguos


Anti-alias
Rellenos de textura y degradado
Lneas gruesas
Curvas spline cardinales
Regiones dimensionables
Coordenadas de punto flotante
Lneas compuestas
Lpiz insertado
Dimensionalidad y filtrado de alta calidad
Varios estilos de lnea y opciones para extremos

La compatibilidad de imgenes incluye lo siguiente:

Compatibilidad original para formatos de archivos de imagen como .jpeg, .png,


.gif, .bmp, .tiff, .exif e .icon
Interfases comunes para la codificacin y decodificacin de formatos de imgenes
de trama con carcter arbitrario
Arquitectura extensible para agregar de forma dinmica nuevos formatos de
archivos de imagen
Compatibilidad de procesamiento de imgenes originales para operaciones
comunes relacionadas con puntos como brillo, contraste, color, equilibrio,
difuminacin y disolucin. Compatibilidad de transformaciones comunes como
rotacin o cortes, entre otras.

18
Textos Universitarios / Serie Docencia
________________________________________________________________________

Administracin de color

Compatibilidad con sRGB, ICM2 y sRGB64

La compatibilidad tipogrfica incluye lo siguiente:

Compatibilidad original ClearType


Texto rellenado con textura y degradado
Compatibilidad total con Unicode en todas las plataformas
Compatibilidad con todas las secuencias de comandos de Windows 2000
Actualizacin con los estndares de Unicode 3.0
Compatibilidad con servicios de lnea de texto para una mejor lectura textual

Las clases de GDI+ residen en los siguientes seis espacios de nombres System.Drawing,
System.Drawing.Design, System.Drawing.Drawing2D, System.Drawing.Imaging,
System.Drawing.Printing y System.Drawing.Text. Todos estos espacios de nombres
se encuentran en el ensamblado System.Drawing.DLL.

Figura 1.1. Espacio de nombres System.Drawing

Para usar cualquier clase definida en estos espacios de nombres, hay que incluirlos en su
aplicacin.

19
Jenaro C. Paz
________________________________________________________________________

1.1 Superficies de dibujo y sistemas de Coordenadas en


GDI+3
Es esencial entender lo que es una superficie de dibujo y conocer los sistemas de
coordenadas de GDI+ para poder escribir aplicaciones que tengan que ver con la
generacin de grficos en lnea.

1.1.1 Superficies de dibujo


Cualquier aplicacin para dibujo consiste de los siguientes componentes:

El lienzo (canvas), que viene siendo el espacio donde los diferentes objetos se
dibujarn, en una aplicacin Web, la forma Web es el lienzo.

Un pincel (brush) o una pluma (pen) es el color, la textura y la dimensin de los


objetos que se van a dibujar en el lienzo.

El procedimiento indica como los objetos se dibujan en el lienzo.

Cada superficie de dibujo cuenta con cuatro propiedades: ancho, alto, resolucin y
profundidad de color.
El ancho y alto de una superficie determinan su tamao y estos estn
especificados por el nmero de pixeles tanto horizontal como verticalmente.
Entendemos un pxel como el elemento ms pequeo que participa en un proceso
de dibujo para desplegar objetos grficos o imgenes en la pantalla. La densidad
de pixeles se representa por el valor de puntos por pulgada (dpi).

La resolucin de una superficie es una medida de la calidad de la imagen en


puntos por pulgada (dpi).

La profundidad de color de una superficie es el nmero de colores que puede


tener un pxel.

La calidad de un pxel es directamente proporcional a la profundidad de color. La


estructura Color representa un color en GDI+. Mas adelante en este capitulo
ahondaremos sobre este tpico.

1.1.2 Sistemas de Coordenadas


El Sistema de coordenadas representa las posiciones de los objetos grficos en un
dispositivo de despliegue como monitores o impresoras. El sistema de coordenadas de
GDI+ tiene como origen la esquina superior izquierda. El eje x apunta hacia la derecha y
el eje y apunta hacia abajo

3
Traduccin de la referencia en lnea de MSDN (Microsoft Developer Network) por J.C. Paz
http://msdn.microsoft.com/library/en-us/gdicpp/GDIPlus/aboutGDIPlus/
coordinatesystemsandtransformations/ typesofcoordinatesystems.asp junio 3 de 2006

20
Textos Universitarios / Serie Docencia
________________________________________________________________________

Figura 1.2. Sistema de Coordenadas de GDI+

Puntos con valores negativos de x y no son visibles en este sistema de coordenadas, sin
embargo mediante transformaciones puede trasladarse el origen para que objetos con
valores negativos puedan mostrarse.

GDI+ usa tres espacios de coordenadas: mundiales, de pgina y de dispositivo. Cuando se


hace la llamada g.DrawLine(myPen,0,0,100,150), los puntos que se le pasan al
mtodo DrawLine [ (0,0) y (100,150)] estn dados en el espacio de coordenadas
mundiales. Antes que GDI+ pueda dibujar la lnea en la pantalla, las coordenadas pasan
por una serie de transformaciones. Una transformacin convierte las coordenadas
mundiales a coordenadas de pgina y otra transformacin convierte estas ltimas a
coordenadas de dispositivo.

Suponga que se va a trabajar con un sistema de coordenadas que tiene su origen en el


cuerpo del rea del cliente a 50 pixeles de la orilla izquierda y a 50 pixeles de la orilla
superior como se muestra a continuacin.

Figura 1.3. Sistema de Coordenadas trasladado con respecto al origen

Cuando se llama el mtodo g.DrawLine(myPen,0,0,100,150) se obtiene una lnea


como la mostrada a continuacin

21
Jenaro C. Paz
________________________________________________________________________

Figura 1.4. Lnea en el Sistema de Coordenadas trasladado

Las coordenadas de los puntos extremos en los tres sistemas de coordenadas son:

Mundiales (0,0) (100,150)


Pgina (50,50) (150,200)
Dispositivo (50,50) (150,200)

Note que el sistema de coordenadas de pgina tiene su origen en la esquina superior


izquierda del rea del cliente y que debido a que la unidad de medida es el pxel, el
espacio de coordenadas de dispositivo es el mismo, pero que si la unidad de medida fuera
por ejemplo el centmetro entonces habra una diferencia entre los tres sistemas de
coordenadas.
La transformacin que convierte al sistema de coordenadas mundial al sistema de
coordenadas de pgina se llama transformacin mundial y esta sustentada por el objeto
Graphics. En el ejemplo anterior la Transformacin consiste en una translacin de 50
unidades en el eje x as como tambin en el eje de las y. En el siguiente ejemplo se
establece una transformacin mundial para un objeto Graphics y luego se utiliza este para
dibujar la lnea del ejemplo anterior.

g.TranslateTransform(50.0F,50.0F);
g.DrawLine(myPen,0,0,100,150);

Figura 1.5. Lnea dibujada por GDI+

22
Textos Universitarios / Serie Docencia
________________________________________________________________________
La transformacin que convierte al sistema de coordenadas de pgina al sistema de
dispositivo se llama transformacin de pgina, tambin est sustentada por el objeto
Graphics mediante las propiedades PageUnit y PageScale conteniendo tambin las
propiedades DpiX y DpiY, que sirven para investigar el nmero de pixeles por pulgada
tanto en el eje x como en el y.

Se puede usar la propiedad PageUnit de la clase Graphics para especificar la unidad de


medida a usar. El siguiente ejemplo dibuja una lnea de (0,0) a (1,2) donde el punto (1,2)
se encuentra a 1 pulgada a la derecha y 2 pulgadas hacia abajo de (0,0).
g.PageUnit=GraphicsUnit.Inch;
g.TranslateTransform(0.5F,0.5F);
Pen myPen= new Pen(Color.Red, 2/g.DpiX);
Pen myPen2= new Pen(Color.Blue,1/g.DpiX);
g.DrawLine(myPen2,0,0,2,0);
g.DrawLine(myPen2,0,0,0,2);
g.DrawLine(myPen, 0, 0, 1, 2);

donde myPen y myPen2 deben estar definidas de la manera anterior para que tenga un
grosor de 2 pixeles y 1 pixel y no de 2 y 1 pulgadas
GraphicsUnit4 es una enumeracin que contiene los elementos:

Nombre de miembro Descripcin


Display Especifica 1/75 de pulgada como unidad de
medida.
Document Especifica la unidad del documento (1/300
de pulgada) como unidad de medida.
Inch Especifica que la pulgada es la unidad de
medida.
Millimeter Especifica que el milmetro es la unidad de
medida.
Pixel Especifica que un pxel de dispositivo es la
unidad de medida.
Point Especifica que un punto de la impresora
(1/72 de pulgada) es la unidad de medida.
World Especifica que la unidad universal es la
unidad de medida.

Tabla 1.1. Enumeracin GraphicsUnit

4
Traduccin de la referencia en lnea de MSDN (Microsoft Developer Network) por J.C. Paz
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDrawingGraphicsUnitClassTopic.asp
junio 3 2006

23
Jenaro C. Paz
________________________________________________________________________

Si suponemos que el dispositivo de despliegue (pantalla) tiene 72 puntos por pulgada en


ambas direcciones, los puntos extremos de la lnea en el ejemplo anterior tienen los
siguientes valores en los tres espacios de coordenadas:

Mundiales (0,0) (1,2)


Pgina (0.5,0.5) (1.5,2.5)
Dispositivo (36,36) (108,180)

La Figura 1.6 muestra este ejemplo y lo dicho anteriormente:

Figura 1.6. Llnea dibujada por GDI+ donde se ha trasladado el origen


y cambiado la especificacin de unidades

En el Captulo 10 trataremos con las Matrices que representan a las Transformaciones.

1.2 Estructuras Esenciales


Estructuras frente a clases
Las estructuras pueden parecer muy similares a las clases, pero existen diferencias
importantes que se deben tener en cuenta. En primer lugar, las clases son tipos de
referencia mientras que las estructuras son tipos de valor. Mediante las estructuras, se
pueden crear objetos que se comportan como los tipos basicos - Boolean, Byte, Char,
Decimal, Double, Int16, Int32, Int64, SByte, Single, UInt16, UInt32, UInt64 - y
aprovechar sus beneficios.

Montn o pila?
Cuando se realiza una llamada con el operador New sobre una clase, se asigna espacio en
el montn (heap). Sin embargo, cuando se crea una instancia de una estructura, el espacio
se asigna en la pila (stack). De esta forma, se consigue mejorar el rendimiento. Adems, a

24
Textos Universitarios / Serie Docencia
________________________________________________________________________
diferencia de las clases, no tendr que tratar con referencias a instancias de estructuras. Se
trabaja directamente con la instancia de la estructura. Debido a esto, cuando se pasa una
estructura a un mtodo, se pasa por valor en vez de como una referencia.

Constructores y herencia
Las estructuras pueden declarar constructores, pero deben utilizar parmetros. Es un error
declarar un constructor predeterminado (sin parmetros) para una estructura. Los
miembros de una estructura no pueden tener inicializadores. Siempre existe un
constructor predeterminado que inicializa los miembros de la estructura con sus valores
predeterminados.

Cuando se crea un objeto struct mediante el operador new, se crea y se llama al


constructor apropiado. A diferencia de las clases, se pueden crear instancias de las
estructuras sin utilizar el operador New. Si no se utiliza New, los campos permanecern
sin asignar y el objeto no se podr utilizar hasta haber inicializado todos los campos.

A diferencia de las clases, para las estructuras no existe herencia. Una estructura no
puede heredar de otra estructura o clase, ni puede ser la base de una clase. Sin embargo,
las estructuras heredan de la clase base object. Una estructura puede implementar
interfases del mismo modo que las clases.

Conclusin
Las estructuras son sencillas de utilizar y pueden resultar muy tiles en ocasiones.
Simplemente, tenga en cuenta que se crean en la pila y que no se utilizan referencias a
ellas, sino que se trata directamente con ellas. Siempre que necesite un tipo que se utilice
a menudo y que trate con valores de datos, las estructuras constituyen una excelente
opcin.

Cuando se programa para ambientes grficos es muy comn y casi necesario trabajar con
los siguientes cuatro tipos de datos (definidos por estructuras):

Puntos de coordenadas bidimensionales (forma entera y de punto flotante)


Tamaos en trminos de ancho y alto (forma entera y de punto flotante)
Rectngulos (forma entera y de punto flotante)
Colores

Estas siete estructuras junto con CharacterRange son las ocho nicas estructuras
definidas en el espacio de nombres System.Drawing5. Aunque en C# las clases y las
estructuras son muy parecidas ya que sus mtodos y campos (al igual que propiedades y
eventos) son privados en ambas, difieren en que las clases son tipos referencia (o
apuntadores a bloques de memoria) y las estructuras son tipos valor as como los tipos
bsicos
-Boolean, Byte, Char, Decimal, Double, Int16, Int32, Int64, SByte, Single, UInt16,
UInt32, UInt64-. Todas estas estructuras (vase Figura 1.2) descienden de
5
Traduccin de la referencia en lnea de MSDN (Microsoft Developer Network) por J.C. Paz
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDrawing.asp junio 3 2006

25
Jenaro C. Paz
________________________________________________________________________

System.ValueType y debe pensarse en este tipo de datos como objetos livianos o


pequeos que se crean y destruyen con frecuencia.

Figura 1.7. Herencia para las estructuras

1.2.1 Estructura Point (puntos bidimensionales)


Point representa un par ordenado de coordenadas x (horizontal) e y (vertical) de enteros
que define un punto en un plano bidimensional que puede ser la pantalla de una
computadora o una hoja de papel en la impresora.

1.2.1.1 Constructores pblicos


Point (Constructor) Sobrecargado. Inicializa una nueva instancia
de la clase Point con las coordenadas
especificadas.

Tabla 1.2. Miembros de la estructura Point

Para crear un punto hay que utilizar el constructor de la siguiente manera:

Point myPoint = new Point(5,12);


int a=134;
int b=65;
Point zPoint = new Point(a,b);

1.2.1.2 Campos pblicos


Empty Representa un Point nulo.

Ejemplos:

Point aPoint = Point.Empty;

1.2.1.3 Propiedades pblicas


IsEmpty Obtiene un valor que indica si el objeto
Point est vaco.
X Obtiene o establece la coordenada x de este
objeto Point.
Y Obtiene o establece la coordenada y de este

26
Textos Universitarios / Serie Docencia
________________________________________________________________________

objeto Point.
Ejemplos:

Point aPoint = Point.Empty;


aPoint.X = 20;
aPoint.Y = 40;

1.2.1.4 Mtodos pblicos


Ceiling Convierte el objeto PointF especificado en
un objeto Point redondeando los valores del
objeto PointF a los valores enteros
superiores siguientes.
Equals Reemplazado. Especifica si este objeto
Point tiene las mismas coordenadas que el
Object especificado.
GetHashCode Reemplazado. Devuelve un cdigo hash
para este objeto Point.
GetType (se hereda de Object) Obtiene el objeto Type de la instancia
actual.
Offset Convierte este objeto Point en la cantidad
especificada.
Round Convierte el objeto PointF especificado en
Point redondeando los valores del objeto
Point a los valores enteros ms cercanos.
ToString Reemplazado. Convierte esta estructura
Point en una cadena legible para el usuario.
Truncate Convierte el objeto PointF especificado al
objeto Point mediante el truncamiento de
los valores del objeto Point.

Ejemplos:

PointF bPoint=new PointF(20.5F,13.2F);


Point cPoint=Point.Ceiling(bPoint);
Point dPoint= new Point(20,13);
Boolean bvar=bPoint.Equals(dPoint);
int hCode=dPoint.GetHashCode();
Type oneType = dPoint.GetType();
dPoint.Offset(1,2); // p(21,15)
Point ePoint=Point.Round(bPoint);
String sPoint = ePoint.ToString();
Point hPoint = Point.Truncate(bPoint);

1.2.1.5 Operadores pblicos y conversiones de tipos


Operador de suma Convierte Point en Size especificado.

27
Jenaro C. Paz
________________________________________________________________________

Operador de igualdad Compara dos objetos Point. El resultado


especifica si los valores de las propiedades
X y Y de los dos objetos Point son iguales.
Operador de desigualdad Compara dos objetos Point. El resultado
especifica si los valores de las propiedades
X y Y de los dos objetos Point no son
iguales.
Operador de resta Convierte un objeto Point en la cantidad
negativa del objeto Size especificado.
Conversin de Point a Size Crea un nuevo objeto Size con las
coordenadas del objeto Point especificado.
Conversin de Point a PointF Crea un nuevo objeto PointF con las
coordenadas del objeto Point especificado.

Ejemplos:

Point hPoint = new Point(5,4);


Size tSize = new Size(10,10);
Point iPoint = hPoint + tSize;
Point jPoint = new Point(30,23);
bool areEqual = iPoint == jPoint;
bool unEqual = iPoint != mPoint;
Point mPoint = iPoint-tSize;
Size nSize = new Size(iPoint);
PointF fPoint = (PointF)jPoint;

1.2.1.6 Mtodos protegidos


Finalize (se hereda de Object) Reemplazado. Permite que un objeto Object
intente liberar recursos y realizar otras
operaciones de limpieza antes de que el
objeto Object sea reclamado por el
recolector de elementos no utilizados.
MemberwiseClone (se hereda de Object) Crea una copia superficial del objeto Object
actual.

1.2.2 Estructura Size (tamaos)


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

1.2.2.1 Constructores pblicos


Size (Constructor) Sobrecargado. Inicializa una nueva instancia
de la clase Size a partir del objeto Point
especificado.

Tabla 1.3. Miembros de la estructura Size

28
Textos Universitarios / Serie Docencia
________________________________________________________________________

Ejemplos:

Point hPoint = new Point(5,4);


Size zSize = new Size();
Size tSize = new Size(10,10);
Size mSize = new Size(hPoint);

1.2.2.2 Campos pblicos


Empty Inicializa una nueva instancia de la clase
Size.
Ejemplos:

Size aSize = Size.Empty;

1.2.2.3 Propiedades pblicas


Height Obtiene o establece el componente vertical
de este Size.
IsEmpty Prueba si este objeto Size tiene un ancho y
un alto de cero.
Width Obtiene o establece el componente
horizontal de este Size.

Ejemplos:

Size aSize = Size.Empty;


aSize.Height = 20;
aSize.Width = 4*aSize.Height;
if(!aSize.IsEmpty) {aSize.Height=0; aSize.Width=0;}

1.2.2.4 Mtodos pblicos


Ceiling Convierte la estructura SizeF especificada
en una estructura Size redondeando los
valores de SizeF a los valores enteros
superiores siguientes.
Equals Reemplazado. Comprueba si el objeto
especificado es Size con las mismas
dimensiones que este Size.
GetHashCode Reemplazado. Devuelve un cdigo hash
para esta estructura Size.
GetType (se hereda de Object) Obtiene el objeto Type de la instancia
actual.
Round Convierte la estructura SizeF especificada
en una estructura Size redondeando los
valores de Size a los valores enteros ms

29
Jenaro C. Paz
________________________________________________________________________

cercanos.
ToString Reemplazado. Crea una cadena legible para
el usuario que representa este Size.
Truncate Convierte la estructura SizeF especificada
en una estructura Size mediante el
truncamiento de los valores de la estructura
Size a los valores enteros inferiores
siguientes.

Ejemplos:

SizeF bSize=new SizeF(23.5F,23.2F);


Size cSize=Size.Ceiling(bSize);
Size dSize= new Size(29,33);
Boolean b_var=bSize.Equals(dSize);
int h_Code=dSize.GetHashCode();
Type theType = dSize.GetType();
Size eSize=Size.Round(bSize);
String sSize = eSize.ToString();
Size hSize = Size.Truncate(bSize);

1.2.2.5 Operadores pblicos y conversiones de tipos


Operador de suma Agrega el ancho y el alto de una estructura
Size al ancho y alto de otra estructura Size.
Operador de igualdad Determina si dos estructuras Size son
iguales.
Operador de desigualdad . Determina si dos estructuras Size son
distintas.
Operador de resta Resta el ancho y el alto de una estructura
Size del ancho y alto de otra Size.
Conversin de Size a Point Convierte el objeto Size especificado en
Point.
Conversin de Size a SizeF Convierte el objeto Size especificado en
SizeF.

Ejemplos:

Size oSize = new Size(15,24);


Size pSize = new Size(10,10);
Size iSize = oSize + pSize;
Size jSize = new Size(34,122);
bool bEqual = iSize == jSize;
bool bunEqual = iSize != oSize;
Size mSize = iSize-tSize;
Point nPoint = new Point(iSize);
SizeF fSize = (SizeF)jSize;

30
Textos Universitarios / Serie Docencia
________________________________________________________________________

1.2.2.6 Mtodos protegidos


Finalize (se hereda de Object) Reemplazado. Permite que un objeto Object
intente liberar recursos y realizar otras
operaciones de limpieza antes de que el
objeto Object sea reclamado por el
recolector de elementos no utilizados.

En C# y C++, los finalizadores se expresan


mediante la sintaxis del destructor.
MemberwiseClone (se hereda de Object) Crea una copia superficial del objeto Object
actual.

1.2.3 Estructura Rectangle (rectngulos)


Rectangle almacena un conjunto de cuatro enteros que representan la posicin y tamao
de un rectngulo.

1.2.3.1 Constructores pblicos


Rectangle (Constructor) Sobrecargado. Inicializa una nueva instancia
de la clase Rectangle con la ubicacin y el
tamao y especificados.

Tabla 1.4. Miembros de la estructura Rectangle

Ejemplos:

Rectangle aRect = new Rectangle(15,24,80,60);


Point onePoint = new Point(20,20);
Size theSize = new Size(73,127);
Rectangle bRect = new Rectangle(onePoint, theSize);
RectangleF gRect = new RectangleF(10.3F,24.7F,86.4F,45.3F);

1.2.3.2 Campos pblicos


Empty Representa una estructura Rectangle con las
propiedades sin inicializar.

Ejemplos:

Rectangle hRect = Rectangle.Empty;


1.2.3.3 Propiedades pblicas
Bottom Obtiene la coordenada y del borde inferior
de esta estructura Rectangle.

31
Jenaro C. Paz
________________________________________________________________________

Height Obtiene o establece el alto de esta estructura


Rectangle.

IsEmpty Comprueba si todas las propiedades


numricas de este objeto Rectangle tienen
valores de cero.
Left Obtiene la coordenada x del borde izquierdo
de esta estructura Rectangle.
Location Obtiene o establece las coordenadas de la
esquina superior izquierda de esta estructura
Rectangle.
Right Obtiene la coordenada x del borde derecho
de esta estructura Rectangle.

Size Obtiene o establece el tamao de este


Rectangle.

Top Obtiene la coordenada y del borde superior


de esta estructura Rectangle.

Width Obtiene o establece el ancho de esta


estructura Rectangle.

X Obtiene o establece la coordenada x de la


esquina superior izquierda de esta estructura
Rectangle.
Y Obtiene o establece la coordenada y de la
esquina superior izquierda de esta estructura
Rectangle.

Ejemplos:

int Y1 = aRect.Top;
int Y2 = aRect.Bottom;
int X1 = aRect.Left;
int X2 = aRect.Right;
int aWidth = aRect.Width;
int aHeight = aRect.Height;
Point onePoint = new Point(20,20);
Size theSize = new Size(73,127);
Rectangle cRect = Rectangle.Empty;
If(cRect.IsEmpty)
{
cRect.X = X1;
cRect.Y = Y1;
cRect.Size=theSize;

32
Textos Universitarios / Serie Docencia
________________________________________________________________________

}
Rectangle dRect = Rectangle.Empty;
dRect.Location= onePoint;
dRect.Width = 100;
dRect.Height = 200;

1.2.3.4 Mtodos pblicos


Ceiling Convierte la estructura RectangleF
especificada en una estructura Rectangle
redondeando los valores de RectangleF a
los valores enteros superiores siguientes.
Contains Sobrecargado. Determina si el punto
especificado est dentro de la regin
rectangular que define Rectangle.
Equals Reemplazado. Comprueba si obj es una
estructura Rectangle con la misma
ubicacin y el mismo tamao que esta
estructura Rectangle.
FromLTRB Crea una estructura Rectangle con las
ubicaciones de los bordes especificadas.
GetHashCode Reemplazado. Devuelve el cdigo hash para
esta estructura Rectangle. Para obtener
informacin acerca del uso de cdigos hash,
vea Object.GetHashCode.
GetType (se hereda de Object) Obtiene el objeto Type de la instancia
actual.
Inflate Sobrecargado. Crea y devuelve una copia
aumentada de la estructura Rectangle
especificada. La copia se aumenta en la
cantidad especificada.
Intersect Sobrecargado. Reemplaza esta estructura
Rectangle con la interseccin de ella misma
y la estructura Rectangle especificada.
IntersectsWith Determina si este rectngulo tiene una
interseccin con rect.
Offset Sobrecargado. Ajusta la ubicacin de este
rectngulo en la cantidad especificada.
Round Convierte la estructura RectangleF en
Rectangle redondeando los valores de
RectangleF a los valores enteros ms
cercanos.
ToString Reemplazado. Convierte los atributos de
este Rectangle en una cadena inteligible
para el usuario.

33
Jenaro C. Paz
________________________________________________________________________

Truncate Convierte el objeto RectangleF especificado


en Rectangle mediante el truncamiento de
los valores RectangleF.
Union Obtiene una estructura Rectangle que
contiene la interseccin de dos estructuras
Rectangle.

Ejemplos:

RectangleF aR = new RectangleF(5.3F, 2.1F, 23.9F,45.6F);


Rectangle bR = Rectangle.Ceiling(aR);
bool bInside = aR.Contains(6.7F,4.5F);
bool bInside2 = aR.Contains(bR);
bool bEQ = aR.Equals(bR);
Rectangle myR = Rectangle.FromLTRB(X1,Y1,X2,Y2);
Type rType = myR.GetType();
aR.Inflate(23.5F,12.9F);
bR.Intersect(dRect);
bool bIntersect = aR.IntersectsWith(bR);
aR.Offset(10.0F,10.0F);
Rectangle cR = Rectangle.Round(aR);
string sRect = cR.ToString();
Rectangle dR = Rectangle.Truncate(aR);
Rectangle Ra = new Rectangle(5,5,20,20);
Rectangle Rb = new Rectangle(10,10,30,30);
Rectangle rectan = Rectangle.Union(Ra,Rb);

1.2.3.5 Operadores pblicos


Operador de igualdad Comprueba si dos estructuras Rectangle
tiene la misma ubicacin y el mismo
tamao.
Operador de desigualdad Comprueba si dos estructuras Rectangle
tiene una ubicacin o un tamao diferentes.

Ejemplos:

RectangleF aR = new RectangleF(5.3F, 2.1F, 23.9F,45.6F);


Rectangle bR = Rectangle.Ceiling(aR);
bool bEqualRect = Ra == Rb;
bool bSameRect = Ra != Rb;

1.2.3.6 Mtodos protegidos


Finalize (se hereda de Object) Reemplazado. Permite que un objeto Object
intente liberar recursos y realizar otras
operaciones de limpieza antes de que el
objeto Object sea reclamado por el

34
Textos Universitarios / Serie Docencia
________________________________________________________________________

recolector de elementos no utilizados.

En C# y C++, los finalizadores se expresan


mediante la sintaxis del destructor.
MemberwiseClone (se hereda de Object) Crea una copia superficial del objeto Object
actual.

1.2.4 Estructura Color (colores)


Color representa un color ARGB. (Alfa, Red, Green, Blue). En GDI+ un color est
representado por una estructura de 32 bits construido de cuatro componentes cuyo rango
de valores varia de 0 a 255. La componente alfa (los primeros 8 bits) del color representa
la transparencia, que determina de que manera un color se mezcla con el fondo. Un valor
alfa de 0 representa un color completamente transparente y un valor de 255 representa un
color opaco; valores intermedios producen resultados entre estos extremos. El espacio de
colores RGB puede pensarse como un cubo en donde la longitud indica la intensidad de
rojo, el ancho indica la intensidad de verde y la altura indica la intensidad en azul. El
punto (0,0,0) es negro y el (255,255,255) es blanco. Cualquier otro color disponible se
encuentra dentro del cubo.

1.2.4.1 Campos pblicos


Empty Representa un color nulo.

Tabla 1.5. Miembros de la estructura Color

1.2.4.2 Propiedades pblicas


A Obtiene el valor del componente alfa de esta
estructura Color.
B Obtiene el valor del componente azul de
esta estructura Color.
G Obtiene el valor del componente verde de
esta estructura Color.
IsEmpty Especifica si esta estructura Color est sin
inicializar.

IsKnownColor Especifica si esta estructura Color es un


color predefinido. Los elementos de la
enumeracin KnownColor representan los
colores predefinidos.
IsNamedColor Especifica si esta estructura Color es un
color predefinido. Los elementos de la
enumeracin KnownColor representan los

35
Jenaro C. Paz
________________________________________________________________________

colores predefinidos.
IsSystemColor Especifica si esta estructura Color es un
color del sistema. Un color del sistema es un
color utilizado en un elemento que se
muestra en Windows. Los elementos de la
enumeracin KnownColor representan los
colores del sistema.
Name Obtiene el nombre de este nombre de
Color. Devolver el nombre del color
definido por el usuario, si el color se cre a
partir de un nombre, o el nombre de un
color conocido. Para los colores
personalizados, se devuelve el valor RGB.
R Obtiene el valor del componente rojo de
esta estructura Color.

Propiedades pblicas ( Obtiene un color definido por el sistema.)


AliceBlue DarkTurquoise LightSkyBlue Peru
AntiqueWhite DarkViolet LightSlateGray Pink
Aqua DeepPink LightSteelBlue Plum
Aquamarine DeepSkyBlue LightYellow PowderBlue
Azure DimGray Lime Purple
Beige DodgerBlue LimeGreen Red
Bisque Firebrick Linen RosyBrown
Black FloralWhite Magenta RoyalBlue
BlanchedAlmond ForestGreen Maroon SaddleBrown
Blue Fuchsia MediumAquamarine Salmon
BlueViolet Gainsboro MediumBlue SandyBrown
Brown GhostWhite MediumOrchid SeaGreen
BurlyWood Gold MediumPurple SeaShell
CadetBlue Goldenrod MediumSeaGreen Sienna
Chartreuse Gray MediumSlateBlue Silver
Chocolate Green MediumSpringGreen SkyBlue
Coral GreenYellow MediumTurquoise SlateBlue
CornflowerBlue Honeydew MediumVioletRed SlateGray
Cornsilk HotPink MidnightBlue Snow
Crimson IndianRed MintCream SpringGreen
Cyan Indigo MistyRose SteelBlue
DarkBlue Ivory Moccasin Tan
DarkCyan Khaki NavajoWhite Teal
DarkGoldenrod Lavender Navy Thistle
DarkGray LavenderBlush OldLace Tomato
DarkGreen LawnGreen Olive Transparent
DarkKhaki LemonChiffon OliveDrab Turquoise
DarkMagenta LightBlue Orange Violet

36
Textos Universitarios / Serie Docencia
________________________________________________________________________

DarkOliveGreen LightCoral OrangeRed Wheat


DarkOrange LightCyan Orchid White
DarkOrchid LightGoldenrodYellow PaleGoldenrod WhiteSmoke
DarkRed LightGray PaleGreen Yellow
DarkSalmon LightGreen PaleTurquoise YellowGreen
DarkSeaGreen LightPink PaleVioletRed
DarkSlateBlue LightSalmon PapayaWhip
DarkSlateGray LightSeaGreen PeachPuff

1.2.4.3 Mtodos pblicos


Equals Reemplazado. Comprueba si el objeto
especificado es una estructura Color y si
equivale a esta estructura Color.
FromArgb Sobrecargado. Crea una estructura Color a
partir de los cuatro valores de los
componentes ARGB de 8 bits (alfa, rojo,
verde y azul).
FromKnownColor Crea una estructura Color a partir del color
predefinido especificado.
FromName Crea una estructura Color a partir del
nombre especificado de un color
predefinido.
GetBrightness Obtiene el valor de brillo HSB (brillo de
saturacin de matiz) de esta estructura
Color.
GetHashCode Reemplazado. Devuelve un cdigo hash
para esta estructura Color.

GetHue Obtiene el valor de matiz HSB (brillo de


saturacin de matiz), en grados, de esta
estructura Color.
GetSaturation Obtiene el valor de saturacin HSB (brillo
de saturacin de matiz) de esta estructura
Color.
GetType (se hereda de Object) Obtiene el objeto Type de la instancia
actual.

ToArgb Obtiene el valor ARGB de 32 bits de esta


estructura Color.

ToKnownColor Obtiene el valor KnownColor de esta


estructura Color.

37
Jenaro C. Paz
________________________________________________________________________

ToString Reemplazado. Convierte esta estructura


Color en una cadena inteligible para el
usuario.

1.2.4.4 Operadores pblicos


Operador de igualdad Comprueba si dos estructuras Color
especificadas son equivalentes.

Operador de desigualdad Comprueba si dos estructuras Color


especificadas son distintas.

1.2.4.5 Mtodos protegidos


Finalize (se hereda de Object) Reemplazado. Permite que un objeto Object
intente liberar recursos y realizar otras
operaciones de limpieza antes de que el
objeto Object sea reclamado por el
recolector de elementos no utilizados.

En C# y C++, los finalizadores se expresan


mediante la sintaxis del destructor.
MemberwiseClone (se hereda de Object) Crea una copia superficial del objeto Object
actual.

Ejemplos:

RectangleF aR = new RectangleF(5.3F, 2.1F, 23.9F,45.6F);


//Crear un color usando ARGB
Color redColor = Color.FromArgb(120,255,0,0);
//Crear un color usando su nombre
Color orchidColor = Color.FromName(Orchid);
//Crear un color a partir de un color conocido
Color blueColor = Color.FromKnowColor(KnownColor.Blue);
//Crear un color vacio
Color unColor = Color.Empty;
//Verifica si un color es vacio
if(unColor.IsEmpty)
{
unColor = Color.LightGoldenrodYellow;
}
//Valor de propiedades
string str = Color : + greenColor.Name +
, A: + greenColor.A.ToString() +
, R: + greenColor.R.ToString() +
, G: + greenColor.G.ToString() +
, B: + greenColor.B.ToString();
//Creacion de Color

38
Textos Universitarios / Serie Docencia
________________________________________________________________________
Color myColor = Color.FromArgb(255,200,0,120);
//Obtener matiz, saturacin y brillo
float matiz = myColor.GetHue();
float saturacion = myColor.GetSaturation();
float brillo = myColor.GetBrightness();
string str2 = Matiz: + matiz.ToString() + \n +
Saturacion: +saturacion.ToString() + \n +
Brillo: +brillo.ToString();

En el ejemplo anterior hemos utilizado las propiedades pblicas A, R, G, B para obtener


las componentes del color en el sistema ARGB y los mtodos pblicos GetHue,
GetSaturation y GetBrightness para obtenerlos en el sistema HSB.

El Framework.NET de Microsoft cuenta con las clases TypeConverter y ColorConverter


para llevar a cabo conversiones cuando el usuario cuenta con la informacin de Color en
un formato especificado bajo algn estndar y desea procesarlo bajo aplicaciones Web
haciendo uso de GDI+, veamos como son estas dos clases:

1.2.5 Clase TypeConverter6


Requisitos

Espacio de nombres: System.ComponentModel

Proporciona un modo unificado para convertir los tipos de valores en otros tipos, as
como para obtener acceso a valores estndar y a subpropiedades.

1.2.5.1 Constructores pblicos


TypeConverter (Constructor) Inicializa una nueva instancia de la clase
TypeConverter.

Tabla 1.6. Miembros de la Clase TypeConverter

1.2.5.2 Mtodos pblicos


CanConvertFrom Sobrecargado. Devuelve si este conversor
puede convertir un objeto de un tipo al tipo
de este conversor.
CanConvertTo Sobrecargado. Devuelve si este conversor
puede convertir el objeto al tipo
especificado.
ConvertFrom Sobrecargado. Convierte el valor dado al

6
Traduccin de la referencia en lnea de MSDN (Microsoft Developer Network) por J.C. Paz
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemcomponentmodeltypeconverterclasstopic.asp
junio 3 de 2006

39
Jenaro C. Paz
________________________________________________________________________

tipo de este conversor.


ConvertFromInvariantString Sobrecargado. Convierte el valor a un tipo
de este conversor, utilizando la referencia
cultural invariable.
ConvertFromString Sobrecargado. Convierte el texto
especificado a un objeto.
ConvertTo Sobrecargado. Convierte el objeto de valor
dado al tipo especificado.
ConvertToInvariantString Sobrecargado. Convierte el valor
especificado a una representacin de cadena
invariable de la referencia cultural.
ConvertToString Sobrecargado. Convierte el valor
especificado a una representacin de
cadena.
CreateInstance Sobrecargado. Vuelve a crear un Object
dado un conjunto de valores de propiedad
del objeto.
Equals (se hereda de Object) Sobrecargado. Determina si dos instancias
de Object son iguales.
GetCreateInstanceSupported Sobrecargado. Devuelve si al cambiar un
valor de este objeto es necesario llamar a
CreateInstance para crear un nuevo valor.
GetHashCode (se hereda de Object) Sirve como funcin hash para un tipo
concreto, apropiado para su utilizacin en
. algoritmos de hash y estructuras de datos
como las tablas hash.
GetProperties Sobrecargado. Devuelve una coleccin de
propiedades para el tipo de matriz
especificado por el valor del parmetro.
GetPropertiesSupported Sobrecargado. Devuelve si este objeto
admite propiedades.
GetStandardValues Sobrecargado. Devuelve una coleccin de
valores estndar para el tipo de datos para el
que est diseado este conversor de tipos.
GetStandardValuesExclusive Sobrecargado. Devuelve si la coleccin de
valores estndar devueltos por
GetStandardValues es una lista exclusiva.
GetStandardValuesSupported Sobrecargado. Devuelve si este objeto
admite un conjunto estndar de valores que
se pueden seleccionar de una lista.
GetType (se hereda de Object) Obtiene el objeto Type de la instancia
actual.
IsValid Sobrecargado. Devuelve si el valor de

40
Textos Universitarios / Serie Docencia
________________________________________________________________________

objeto dado es vlido para este tipo.


ToString (se hereda de Object) Devuelve un objeto String que representa al
objeto Object actual.

La clase ColorConverter que ahora veremos se usa para convertir colores de un tipo de
datos a otro. Esta clase se hereda de la clase TypeConverter, quien define la
funcionalidad en la conversin de los tipos y la forma de acceder a los valores y
propiedades de ellos. En el Captulo 5 Fuentes y Texto veremos la clase FontConverter.

1.2.6 Clase ColorConverter7


Requisitos

Espacio de nombres: System.Drawing

Convierte colores de un tipo de datos a otro. Se tiene acceso a esta clase mediante
TypeDescriptor.

1.2.6.1 Constructores pblicos


ColorConverter (Constructor) Inicializa una nueva instancia de la clase
ColorConverter.

Tabla 1.7. Miembros de la Clase ColorConverter

7
Traduccin de la referencia en lnea de MSDN (Microsoft Developer Network) por J.C. Paz
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemdrawingcolorconverterclasstopic.asp
junio 3 2006

41
Jenaro C. Paz
________________________________________________________________________

1.2.6.2 Mtodos pblicos


CanConvertFrom Sobrecargado.
CanConvertTo Sobrecargado.
ConvertFrom Sobrecargado.
ConvertFromInvariantString (se hereda Sobrecargado. Convierte el valor a un tipo
de TypeConverter) de este conversor, utilizando la referencia
cultural invariable.
ConvertFromString (se hereda de Sobrecargado. Convierte el texto
TypeConverter) especificado a un objeto.
ConvertTo Sobrecargado.
ConvertToInvariantString (se hereda de Sobrecargado. Convierte el valor
TypeConverter) especificado a una representacin de cadena
invariable de la referencia cultural.
ConvertToString (se hereda de Sobrecargado. Convierte el valor
TypeConverter) especificado a una representacin de
cadena.
CreateInstance (se hereda de Sobrecargado. Vuelve a crear un Object
TypeConverter) dado un conjunto de valores de propiedad
del objeto.
Equals (se hereda de Object) Sobrecargado. Determina si dos instancias
de Object son iguales.
GetCreateInstanceSupported (se hereda Sobrecargado. Devuelve si al cambiar un
de TypeConverter) valor de este objeto es necesario llamar a
CreateInstance para crear un nuevo valor.
GetHashCode (se hereda de Object) Sirve como funcin hash para un tipo
concreto, apropiado para su utilizacin en
algoritmos de hash y estructuras de datos
como las tablas hash.
GetProperties (se hereda de Sobrecargado. Devuelve una coleccin de
TypeConverter) propiedades para el tipo de matriz
especificado por el valor del parmetro.
GetPropertiesSupported (se hereda de Sobrecargado. Devuelve si este objeto
TypeConverter) admite propiedades.
GetStandardValues Sobrecargado.
GetStandardValuesExclusive (se hereda Sobrecargado. Devuelve si la coleccin de
de TypeConverter) valores estndar devueltos por
GetStandardValues es una lista exclusiva.
GetStandardValuesSupported Sobrecargado.
GetType (se hereda de Object) Obtiene el objeto Type de la instancia
actual.
IsValid (se hereda de TypeConverter) Sobrecargado. Devuelve si el valor de
objeto dado es vlido para este tipo.

42
Textos Universitarios / Serie Docencia
________________________________________________________________________

ToString (se hereda de Object) Devuelve un objeto String que representa al


objeto Object actual.

1.2.6.3 Mtodos protegidos


Finalize (se hereda de Object) Reemplazado. Permite que un objeto Object
intente liberar recursos y realizar otras
operaciones de limpieza antes de que el
objeto Object sea reclamado por el
recolector de elementos no utilizados.

En C# y C++, los finalizadores se expresan


mediante la sintaxis del destructor.
GetConvertFromException (se hereda de Devuelve una excepcin que se va a iniciar
TypeConverter) cuando no puede realizarse una conversin.
GetConvertToException (se hereda de Devuelve una excepcin que se va a iniciar
TypeConverter) cuando no puede realizarse una conversin.
MemberwiseClone (se hereda de Object) Crea una copia superficial del objeto Object
actual.
SortProperties (se hereda de Ordena una coleccin de propiedades.
TypeConverter)

Ejemplos
C#
String strColor = #FF00FF
ColorConverter colorConverter = new ColorConverter();
Color myClr = (Color)colorConverter.ConvertFromString(strColor);

Con la finalidad de hacer la tarea de conversin de colores en diferentes formatos ms


fcil, veamos cuales son sus miembros:

1.2.7 Clase ColorTranslator8


Requisitos

Espacio de nombres: System.Drawing

Convierte colores a y de estructuras Color GDI+. No se puede heredar esta clase.

8
Traduccin de la referencia en lnea de MSDN (Microsoft Developer Network) por J.C. Paz
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemdrawingcolortranslatorclasstopic.asp
junio 3 de 2006

43
Jenaro C. Paz
________________________________________________________________________

1.2.7.1 Mtodos pblicos


FromHtml Convierte la representacin de un color
HTML en una estructura Color GDI+.
FromOle Convierte el valor de un color OLE en una
estructura Color GDI+.
FromWin32 Convierte el valor de un color de Windows
en una estructura Color GDI+.
ToHtml Convierte la estructura Color especificada
en una representacin de cadena de un color
HTML.
ToOle Convierte la estructura Color especificada
en un color OLE.
ToWin32 Convierte la estructura Color especificada
en un color de Windows.

Tabla 1.8. Miembros de la Clase ColorTranslator

44
Textos Universitarios / Serie Docencia
________________________________________________________________________

Ejemplos
C#
// Crear una representacion en cadena de caracteres de un color HTML
string htmlColor = "Blue";
// Traducir htmlColor a una estructura Color de GDI+
Color myColor = ColorTranslator.FromHtml(htmlColor);
// rellenar un rectangulo con myColor.
g.FillRectangle(new SolidBrush(myColor),0,0,100,100);

// Crear una representacion entera de un color OLE


int oleColor = 0xFF00;
// Traducir htmlColor a una estructura Color de GDI+
Color myColor = ColorTranslator.FromOle(oleColor);
// rellenar un rectangulo con myColor.
g.FillRectangle(new SolidBrush(myColor),10,30,200,100);

// Crear una representacion entera de un color Windows.


int winColor = 0xA000;
// Traducir winColor a una estructura Color de GDI+
Color myColor = ColorTranslator.FromWin32(winColor);
// rellenar un rectangulo con myColor.
g.FillEllipse(new SolidBrush(myColor),10,30,200,100);

// Crear una instancia de la estructura Color.


Color myColor = Color.Red;
// Traducir myColor a un color HTML.
string htmlColor = ColorTranslator.ToHtml(myColor);

// Crear una instancia de la estructura Color.


Color myColor = Color.Red;
// Traducir myColor a un color OLE.
int oleColor = ColorTranslator.ToOle(myColor);

// Crear una instancia de la estructura Color.


Color myColor = Color.Red;
// Traducir myColor a un color Win32.
int winColor = ColorTranslator.ToWin32(myColor);

45
Jenaro C. Paz
________________________________________________________________________

46

Potrebbero piacerti anche