Thread: FoxPro Some General Questions/Create icons in VFP (GDI+)

Create icons in VFP (GDI+)
PROCEDURE ResizeImage
LPARAMETERS cSourceImage,cOutputImage, nW, nH

#DEFINE GDIPLUS_PIXELFORMAT_32bppPARGB       0x000E200B

LOCAL  oImage, oGraphics, oBitmap, nW, nH
oImage = NEWOBJECT('gpImage','_gdiplus.vcx')
oImage.CreateFromFile( cSourceImage )
oBitmap = NEWOBJECT('gpBitmap', '_gdiplus.vcx')
oGraphics = NEWOBJECT('gpGraphics', '_gdiplus.vcx')
oBitmap.Create( nW, nH, GDIPLUS_PIXELFORMAT_32bppPARGB)
oGraphics.CreateFromImage(oBitmap)
oGraphics.DrawImageScaled( oImage, 0, 0, nW, nH)
oBitmap.SaveToFile( cOutputImage, 'image/png')



=ResizeImage("test.jpg","new.jpg",96,96)

PROCEDURE ResizeImage
LPARAMETERS cSourceImage,cOutputImage,nThumbWidth,nThumbHeight

#DEFINE GDIPLUS_PIXELFORMAT_32bppPARGB       0x000E200B

LOCAL oImage,oGraphics,oBitmap,nThumbWidth,nThumbHeight,nImgWidth,;
nImgHeight,nDestX,nDestY,nDestW,nDestH,m.nFact,nResizHeight,nSpace,nResizWidth

ogpPen = NEWOBJECT('gpPen', '_gdiplus.vcx')
ogpPen.Create(BITLSHIFT(16777215,24) + BITAND(16777215,0x00FF00) + ;
         BITLSHIFT(16777215,16) + BITRSHIFT(16777215,16),2,2)
oGraphics.DrawImageScaled( oImage, 1,1, nW-2, nH-2)
oGraphics.DrawRectangle(oPen,0,0,96,96)


m.oImage = NEWOBJECT('gpImage','_gdiplus.vcx')
m.oImage.CreateFromFile(cSourceImage)
m.oBitmap = NEWOBJECT('gpBitmap','_gdiplus.vcx')
m.oGraphics = NEWOBJECT('gpGraphics','_gdiplus.vcx')
m.oBitmap.Create(nThumbWidth,nThumbHeight,GDIPLUS_PIXELFORMAT_32bppPARGB)
m.oGraphics.CreateFromImage(oBitmap)

m.nImgWidth=m.oImage.ImageWidth
m.nImgHeight=m.oImage.ImageHeight
DO case
   CASE m.nImgWidth > m.nImgHeight
      m.nFact=(m.nImgWidth-m.nThumbWidth)/m.nImgWidth
      m.nResizHeight=m.nImgHeight-(m.nImgHeight*m.nFact)
      m.nSpace=(nThumbHeight-m.nResizHeight)/2
      m.nDestX=0
      m.nDestY=m.nSpace
      m.nDestW=m.nThumbWidth
      m.nDestH=m.nResizHeight

   CASE m.nImgWidth < m.nImgHeight
      m.nFact=(m.nImgHeight-m.nThumbHeight)/m.nImgHeight
      m.nResizWidth=m.nImgWidth-(m.nImgWidth*m.nFact)
      m.nSpace=(nThumbWidth-m.nResizWidth)/2
      m.nDestX=m.nSpace
      m.nDestY=0
      m.nDestW=m.nResizWidth
      m.nDestH=m.nThumbHeight

   CASE m.nImgWidth = m.nImgHeight
      m.nDestX=0
      m.nDestY=0
      m.nDestW=m.nThumbWidth
      m.nDestH=m.nThumbHeight
ENDCASE
m.oGraphics.DrawImageScaled(m.oImage, m.nDestX, m.nDestY, m.nDestW, m.nDestH)
m.oBitmap.SaveToFile(m.cOutputImage,"image/jpeg","quality=90")
ENDPROC
Original



GRADIENT OBJECTS WITH GDI+  
GDI+ AND IMAGES