Inicio > Visual Fox Pro (API de Windows) > GDI +: grabar imagenes de FoxPro de los gráficos (BMP, GIF, JPG, PNG, TIF)

GDI +: grabar imagenes de FoxPro de los gráficos (BMP, GIF, JPG, PNG, TIF)


Grabar imagenes con GDI+

SET PROCEDURE TO gdiplus ADDITIVE
#DEFINE SRCCOPY  0x00CC0020
DO decl

* una instancia gdiplus debe ser creada antes
* y cerrado después de usar cualquier objeto gdiplus

PRIVATE gdiplus
gdiplus = CREATEOBJECT(“gdiplusinit”)

LOCAL hwindow, hdc, bmp, nWidth, nHeight
hwindow = GetFocus()
hdc = GetWindowDC(hwindow)
STORE 0 TO nWidth, nHeight
= GetWinRect(hwindow, @nWidth, @nHeight)

bmp = CREATEOBJECT(“gdibitmap”, m.nWidth, m.nHeight)
WITH bmp
.graphics.GetDC
= BitBlt(.graphics.hdc, 0,0, .imgwidth, .imgheight,;
m.hdc, 0,0, SRCCOPY)
.graphics.ReleaseDC
.SaveToFile(“d:\temp\vfp.tif”)
ENDWITH

= ReleaseDC(m.hwindow, m.hdc)
* fin de principal

PROCEDURE GetWinRect(hwindow, nWidth, nHeight)
#DEFINE maxDword  0xffffffff
LOCAL lpRect, nLeft, nTop, nRight, nBottom
lpRect = REPLI (Chr(0), 16)
= GetWindowRect (hwindow, @lpRect)
nRight  = buf2dword(SUBSTR(lpRect, 9,4))
nBottom = buf2dword(SUBSTR(lpRect, 13,4))

nLeft = buf2dword(SUBSTR(lpRect, 1,4))
IF nLeft > nRight
nLeft = nLeft – maxDword
ENDIF
nTop = buf2dword(SUBSTR(lpRect, 5,4))
IF nTop > nBottom
nTop = nTop – maxDword
ENDIF
nWidth = nRight – nLeft
nHeight = nBottom – nTop
RETURN

PROCEDURE decl
DECLARE INTEGER GetFocus IN user32
DECLARE INTEGER GetWindowDC IN user32 INTEGER hwindow
DECLARE INTEGER ReleaseDC IN user32 INTEGER hwindow, INTEGER hdc
DECLARE INTEGER GetWindowRect IN user32 INTEGER hwnd, STRING @lpRect

DECLARE INTEGER BitBlt IN gdi32;
INTEGER hDestDC, INTEGER x, INTEGER y,;
INTEGER nWidth, INTEGER nHeight, INTEGER hSrcDC,;
INTEGER xSrc, INTEGER ySrc, INTEGER dwRop

  1. Julián García
    5 enero 2012 a las 7:51 pm

    Buenos días,

    Veo en tus ejemplos y utilidades la instrucción: SET PROCEDURE TO gdiplus ADDITIVE

    ¿Como puedo obtener el archivo gdiplus.prg?

    Saludos

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: