Ejemplos de código en VFP -X GDI+ (Cesar Chalom) Traducción [1]

Enviado por : amby en 23 Oct, 2006 - 04:00
ART [2]
En este escrito, Cesar Chalom muestra tres ejemplos de empleo de GDI+ para obtener imágenes al vuelo, partiendo del código de Bernard Bout.

Ejemplos de código en VFP -X GDI+ para "Recrear fichas de notas en VFP9" por Bernard

Artículo original: VFP -X GDI+ code samples for "Recreating One Note Tabs in VFP9" from Bernard
http://weblogs.foxite.com/cesarchalom/archive/2006/08/13/2199.aspx [3]
Autor: Cesar Chalom (http://weblogs.foxite.com/cesarchalom [4])
Traducido por: Ana María Bisbé York (amby@telefonica.net [5])
Para: PortalFox (http://www.portalfox.com [6])


Ahora Bernard Bout me debe dos entradas de blog :-))

Debajo hay algunas imágenes de Bernard Bout, que muestran algunos formularios muy interesantes que ha creado. Para facilitarle el trabajo, mostraré cómo crear la imagen al vuelo que utiliza para crear estos ejemplos, utilizando las nuevas clases desde el proyecto GDIPlus-X, disponible desde CodePlex [7].

Se puede obtener más información en el Blog de Bernard: "Recreating One Note Tabs in VFP9 [8]"

EJEMPLO 1: ON_BIGTAB


La imagen agrandada 8 veces


Imagen original en tamaño original

** Crea una imagen ON_BIGTAB.PNG para ser utilizada en el ejemplo  
** "One Note Tabs" de Bernard Bout
** - una imagen 112x20 píxeles, con un polígono irregular con un borde azul
** y relleno con un color naranja degradado

_SCREEN.AddProperty("System", NEWOBJECT("xfcSystem", LOCFILE("system.vcx","vcx"))) 
* Define los colores que serán utilizados
LOCAL lnRGBStartGradClr, lnRGBEndGradClr
lnRGBStartGradClr = RGB(253,233,218) && naranja claro
lnRGBEndGradClr = RGB(247,182,131) && naranja
lnRGBBorderClr = RGB(59,97,156) && azul oscuro
WITH _SCREEN.System.Drawing
  LOCAL loBitmap AS xfcBitmap
  LOCAL loGfx AS xfcGraphics
  LOCAL loGradBrush AS xfcLinearGradientBrush
  LOCAL loPen AS xfcPen
  LOCAL loRect AS xfcRectangle
  * Crea un bitmap nuevo de  112x20 en el formato predeterminado PixelFormat - 32bppARGB
  loBitmap = .Bitmap.New(112,20)
  * Crea un objeto Graphics que podrá dibujar en el bitmap
  loGfx = .Graphics.FromImage(loBitmap)
  loGfx.Clear(.Color.White) && blanco
  * Crea un objeto Rectangle para la brocha de color degradado lineal
  loRect = .Rectangle.New(0,0,112,19) && Tamaño del bitmap
  
  * Crea una brocha de color degradado lineal - LinearGradientBrush
  loGradBrush = .Drawing2D.LinearGradientBrush.New(loRect,;
  .Color.FromRgb(lnRGBStartGradClr), .Color.FromRgb(lnRGBEndGradClr),1)
  DIMENSION laPoints(6)
  laPoints(1) = .Point.New(0,20)
  laPoints(2) = .Point.New(17,4)
  laPoints(3) = .Point.New(21,2)
  laPoints(4) = .Point.New(109,2)
  laPoints(5) = .Point.New(110,4)
  laPoints(6) = .Point.New(110,20)
  * Llena el polígono con la brocha Gradient Brush
  loGfx.FillPolygon(loGradBrush, @laPoints)
  
  * Crea un trazo, objeto  Pen de color azul para dibujar el borde
  loPen = .Pen.New(.Color.FromRGB(lnRGBBorderClr),1)
  * Dibuja el borde azul
  laPoints(1) = .Point.New(0,19)
  laPoints(2) = .Point.New(17,2)
  laPoints(3) = .Point.New(22,0)
  laPoints(4) = .Point.New(109,0)
  laPoints(5) = .Point.New(111,2)
  laPoints(6) = .Point.New(111,18)
  loGfx.DrawLines(loPen, @laPoints)
  
  * Dibuja los pixels inferior-derechos
  loBitmap.SetPixel(111,19,.Color.FromRGB(lnRGBEndGradClr))
  loBitmap.SetPixel(110,19,.Color.FromRGB(lnRGBEndGradClr))
  * Guarda la imagen
  loBitmap.Save("c:\ON_BigTab.png", .Imaging.ImageFormat.Png)
ENDWITH 

EJEMPLO 2: ON_SMALLTAB


Imagen original agrandada 8 veces.


Imagen original en tamaño original.

** Crea una imagen ON_SMALLTAB.PNG para ser utilizada en el ejemplo 
** "One Note Tabs" de Bernard Bout
** - una imagen 16x8 píxeles, con un polígono irregular con un borde azul
** y relleno con un color naranja degradado

_SCREEN.AddProperty("System", NEWOBJECT("xfcSystem", LOCFILE("system.vcx","vcx"))) 
* Define los colores que serán utilizados
LOCAL lnRGBStartGradClr, lnRGBEndGradClr
lnRGBStartGradClr = RGB(255,232,197) && naranja claro
lnRGBEndGradClr = RGB(255,179,15) && naranja
lnRGBBorderClr = RGB(26,57,86) && azul oscuro
WITH _SCREEN.System.Drawing
  LOCAL loBitmap AS xfcBitmap
  LOCAL loGfx AS xfcGraphics
  LOCAL loGradBrush AS xfcLinearGradientBrush
  LOCAL loPen AS xfcPen
  LOCAL loRect AS xfcRectangle
  * Crea un bitmap nuevo de  16x8 en el formato predeterminado PixelFormat - 32bppARGB
  loBitmap = .Bitmap.New(16,8)
  * Crea un objeto Graphics que podrá dibujar en el bitmap
  loGfx = .Graphics.FromImage(loBitmap)
  loGfx.Clear(.Color.FromRgb(RGB(255,255,255))) && white
  * Crea un objeto Rectangle para la brocha de color degradado lineal
  loRect = .Rectangle.New(0,0,16,8) && Size of bitmap
  
  * Crea una brocha de color degradado lineal - LinearGradientBrush
  loGradBrush = .Drawing2D.LinearGradientBrush.New(loRect,;
  .Color.FromRgb(lnRGBStartGradClr), .Color.FromRgb(lnRGBEndGradClr),1)
  DIMENSION laPoints(5)
  laPoints(1) = .Point.New(0,7)
  laPoints(2) = .Point.New(0,2)
  laPoints(3) = .Point.New(2,0)
  laPoints(4) = .Point.New(8,0)
  laPoints(5) = .Point.New(15,7)
  * Llena el polígono con la brocha Gradient Brush
  loGfx.FillPolygon(loGradBrush, @laPoints)
  * Create a blue Pen object to draw border
  loPen = .Pen.New(.Color.FromRGB(lnRGBBorderClr),1)
  * Dibuja el polígono
  loGfx.DrawPolygon(loPen, @laPoints)
  * Guarda la imagen
  loBitmap.Save("c:\ON_SmallTab.png", .Imaging.ImageFormat.Png)
ENDWITH 

SAMPLE 3: ON_SMALLBUTTON


Imagen original agrandada 8 veces


Imagen resultante agrandada 8 veces


Imagen original en tamaño original


Imagen resultante en tamaño original

** Carga una imagen y dibuja un rectángulo personalizado utilizando un
** LinearGradientBrush; Crea un archivo image ON_SMALLBUTTON.PNG 
** para ser utilizado en el ejemplo "One Note Tabs" de Bernard Bout
** - una imagen de112x20 píxeles, con un polígono irregular, 
** con un borde azul y relleno con un color naranja degradado

_SCREEN.AddProperty("System", NEWOBJECT("xfcSystem", LOCFILE("system.vcx","vcx"))) 
* Define los colores a emplear
LOCAL lnRGBStartGradClr, lnRGBEndGradClr
lnRGBStartGradClr = RGB(253,232,197) && naranja claro
lnRGBEndGradClr = RGB(255,179,15) && naranja
WITH _SCREEN.System.Drawing
  LOCAL loBitmap AS xfcBitmap
  LOCAL loGfx AS xfcGraphics
  LOCAL loGradBrush AS xfcLinearGradientBrush
  LOCAL loRect AS xfcRectangle
  * Carga el objeto Image
  loBitmap = .Image.FromFile(GETPICT())
  * Crea un objeto Graphics que podrá dibujar en el bitmap
  loGfx = .Graphics.FromImage(loBitmap)
  * Crea un objeto Rectangle para la brocha de color degradado lineal
  loRect = .Rectangle.New(0,0,12,18)
  * Crea una brocha de color degradado lineal - LinearGradientBrush
  loGradBrush = .Drawing2D.LinearGradientBrush.New(loRect,;
  .Color.FromRgb(lnRGBStartGradClr), .Color.FromRgb(lnRGBEndGradClr),1)
  * Llena el polígono con la brocha Gradient Brush
  loGfx.FillRectangle(loGradBrush, 3, 1, 12, 17)
  * Guarda la imagen
  loBitmap.Save("c:\ON_SmallButton.png", .Imaging.ImageFormat.Png)
ENDWITH 

Nuevamente, ¡ esperemos por las futuras apariciones de Bernard !


Ejemplos de código en VFP -X GDI+ (Cesar Chalom) Traducción | Entrar/Crear una cuenta [9] | 1 Comentario
Los comentarios son propiedad de sus respectivos autores.
No somos responsables de su contenido.

Re: Ejemplos de código en VFP -X GDI+ (Cesar Chalom) Traducción


por amby en 23 Oct, 2006 - 05:12
(Información del usuario [10]  | Enviar un mensaje [11] http://www.amby.net [12])
Hola

Este artículo se basa en un código escrito por Bernard Bouth y que se puede leer en http://weblogs.foxite.com/bernardbout.

Desde PortalFox, nos hemos puesto en contacto con Bernard y nos ha autorizado a publicar las traducciones de su blog.

Saludos,

Ana
www.amby.net

Enlaces
  [1] http://www.portalfox.com/index.php?name=News&file=article&sid=2259
  [2] http://www.portalfox.com/index.php?name=News&catid=&topic=2
  [3] http://weblogs.foxite.com/cesarchalom/archive/2006/08/13/2199.aspx
  [4] http://weblogs.foxite.com/cesarchalom/
  [5] http://www.portalfox.com/mailto:amby@telefonica.net
  [6] http://www.portalfox.com
  [7] http://www.codeplex.com/Wiki/View.aspx?ProjectName=VFPX
  [8] http://weblogs.foxite.com/bernardbout/archive/2006/06/07/1704.aspx
  [9] http://www.portalfox.com/user.php
  [10] http://www.portalfox.com/user.php?op=userinfo&uname=amby
  [11] http://www.portalfox.com/index.php?module=Messages&func=compose&uname=amby
  [12] http://www.amby.net