Hola invitado         31 Jul, 2010 - 07:31
Menú principal
 
Ads
 
Patrocinadores
 
Anuncios
 
© 2009 PortalFox
Escalar y cortar con GDI+ (Cesar Chalom) Traducción lecturas 3727
 Enviado por amby en Viernes, 21 Julio, 2006
Rutinas Este código mostrará cómo se puede cambiar la escala y acortar / agrandar una imagen.

Escalar y cortar con GDI+

Artículo original: SCALE AND SHEAR WITH GDI+
http://weblogs.foxite.com/cesarchalom/archive/2006/02/07/1125.aspx
Autor: Cesar Chalom (http://weblogs.foxite.com/cesarchalom)
Traducido por: Ana María Bisbé York (amby@telefonica.net)
Para: PortalFox (http://www.portalfox.com)


Ejecute el código que aparece debajo para cambiar el corte y la escala de una imagen.

Muchas gracias a Anatolyi Mogylevets, de www.news2news.com.

Una gran parte de este código es suyo, aunque como está incompleta _gdiplus.vcx, nos obliga a llamar directamente al API http://www.news2news.com/vfp/?example=479.

Para entender mejor como trabaja con GDI+, mire también estos enlaces:

http://www.vbaccelerator.com/home/VB/Code/vbMedia/Using_GDI_Plus/ Scale__Rotate__Skew_and_Transform_Images/article.asp

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/GDIPlus/GDIPlusreference/classes/matrixclass/matrixmethods/shear.asp

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/GDIPlus/GDIPlusreference/classes/matrixclass/matrixmethods/shear.asp

* SCALE AND SHEAR WITH GDI+
* --------------------------
* Muchas gracias a Anatolyi Mogylevets, de www.news2news.com
* Gran parte de este código es suyo, aunque como _gdiplus.vcx 
* está incompleta,nos obliga a llamar directamente a través de API
* http://www.news2news.com/vfp/?example=479
DECLARE INTEGER GdipCreateMatrix IN gdiplus INTEGER @matrix 
DECLARE INTEGER GdipDeleteMatrix IN gdiplus INTEGER matrix 
DECLARE INTEGER GdipShearMatrix IN gdiplus; 
INTEGER matrix, SINGLE shearX, SINGLE shearY, INTEGER ord 
DECLARE INTEGER GdipScaleMatrix IN gdiplus; 
INTEGER matrix, SINGLE scaleX, SINGLE scaleY, INTEGER ord 
DECLARE INTEGER GdipSetWorldTransform IN gdiplus; 
INTEGER graphics, INTEGER matrix
lcSource = GETPICT("jpg;gif;bmp")
lcDestination = ADDBS(JUSTPATH(lcSource))+ "Sheared_" +;
JUSTSTEM(lcSource)+".jpg"
LOCAL loImage AS GpImage OF _gdiplus.vcx
loImage = NEWOBJECT("GpImage", HOME() + "FFC\_gdiplus.vcx")
loImage.CreateFromFile(lcSource)

LOCAL loBitmap AS GpBitmap OF _gdiplus.vcx
loBitmap = NEWOBJECT("GpBitmap", HOME() + "FFC\_gdiplus.vcx")
LOCAL loGraphics AS GpGraphics OF _gdiplus.vcx
loGraphics = NEWOBJECT('GpGraphics',HOME() + "FFC\_gdiplus.vcx")

*** Ahora vamos a crear una imagen nueva con 
*** Create Method - Crea un objeto bitmap. 
*** Sintaxis: ? THIS.Create(tnWidth, tnHeight[, tnPixelFormat])
*** tnPixelFormat, opcional, una de las constantes GDIPLUS_PIXELFORMAT_*, 
*** predeterminadas para GDIPLUS_PIXELFORMAT_32bppARGB.

LOCAL lnWidth, lnHeight, lnPixelFormat
lnWidth = loImage.ImageWidth
lnHeight = loImage.ImageWidth
lnPixelFormat = loImage.PixelFormat
LOCAL matrix1, xScaleFactor, yScaleFactor, xShearfactor, yShearFactor
xScaleFactor = 1.30
yScaleFactor = 0.75
xShearFactor = 0.20
yShearFactor = 0.10
STORE 0 TO matrix1 

lnNewWidth = lnWidth * xScaleFactor * (1 + xShearFactor)
lnNewHeight = lnHeight * yScaleFactor * (1 + yShearFactor)
loBitmap.Create(lnNewWidth, lnNewHeight, lnPixelFormat) 
loGraphics.CreateFromImage(loBitmap)
* crea un objeto Matrix 
* y aplica las transformaciones de la escala y corte 
= GdipCreateMatrix(@matrix1) 
= GdipScaleMatrix(matrix1, xScaleFactor, yScaleFactor, 0) 
= GdipShearMatrix(matrix1, xShearFactor, yShearFactor, 0)
= GdipSetWorldTransform(loGraphics.GetHandle(), matrix1) 
loGraphics.DrawImageAt(loImage, 0, 0) 
loGraphics.ResetTransform()
= GdipDeleteMatrix(matrix1) 
loBitmap.SaveToFile(lcDestination, "image/jpeg")

 Versión imprimible  
Escalar y cortar con GDI+ (Cesar Chalom) Traducción | Entrar/Crear una cuenta | 0 Comentarios
Los comentarios son propiedad de sus respectivos autores.
No somos responsables de su contenido.



Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2010 PortalFox. Todos los derechos reservados.