Hola a todos,
necesito editar fotografias para ponerle texto en cualquier parte, en cualquier color o tamaño.
¿Se puede hacer?, en su caso, ¿un ejemplito?
Saludos
#include "FiveWin.ch"
function Main()
local oWnd, oMenu
MENU oMenu
MENUITEM "Carga bmp" ACTION Carga( oWnd )
ENDMENU
DEFINE WINDOW oWnd MENU oMenu
ACTIVATE WINDOW oWnd
return nil
function carga( oWnd )
local cBmpFile := cGetFile( "*.bmp", "Please select a BMP file" )
local hDC, hDCMem, hOldBmp, hBmp
local hDib
if !file( cBmpFile )
? "No encuentro " + cBmpFile
return nil
endif
hDC := oWnd:GetDC()
hBmp := ReadBitmap( hDC, cBmpFile )
hDCMem := CreateCompatibleDC( hDC )
hOldBmp := SelectObject( hDCMem, hBmp )
TextOut( hDCMem, 10, 10, "Texto de prueba" )
SelectObject( hDCMem, hOldBmp )
DeleteObject( hDCMem )
oWnd:ReleaseDC()
hDib := DibFromBitmap( hBmp )
DibWrite( "test.bmp", hDib )
GloBalFree( hDib )
DeleteObject( hBmp )
return nil
#pragma BEGINDUMP
#include <windows.h>
#include <winuser.h>
#include "hbapi.h"
HB_FUNC( CREATECOMPATIBLEBITMAP )
{
hb_retnl( (LONG) CreateCompatibleBitmap( ( HDC ) hb_parnl( 1 ), hb_parni( 2 ), hb_parni( 3 ) ));
}
HB_FUNC( CREATECOMPATIBLEDC )
{
hb_retnl( (LONG) CreateCompatibleDC( ( HDC ) hb_parnl( 1 )));
}
#pragma ENDDUMP
:
// rojo 0-255
// verde 0-255
// azul 0-255
nColor = SetTextColor( hDCMem, RGB( rojo, verde, azul ))
//.... funciones de pintar texto
SetTextColor( hDCMem, nColor )
:
// rojo 0-255
// verde 0-255
// azul 0-255
nColor = SetBkColor( hDCMem, RGB( rojo, verde, azul ))
//.... funciones de pintar texto
SetBkColor( hDCMem, nColor )
:
DEFINE FONT oFont NAME ... SIZE...
hOldFont = SelectObject( hDCMem, oFont:hFont)
//.... funciones de pintar texto
SelectObject( hDCMem, hOldFont)
oFont:End()
hDCMem := CreateCompatibleDC( hDC )
hOldBmp := SelectObject( hDCMem, hBmp )
//creamos un bitmap en memoria del tamaño del rectángulo que queremos
hBmpMem := CreateCompatibleBitmap( hDC, aRect[4]-aRect[2], aRect[3]-aRect[1] )
//copiamos del bitmap inicial al destino el rectangulo que deseamos:
hDCMem2 := CreateCompatibleDC( hDC )
hOldBmp2 := SelectObject( hDCMem2, hBmpMem )
BitBlt( hDCMem2, 0, 0, aRect[4]-aRect[2], aRect[3]-aRect[1], hDCMem,
aRect[2], aRect[1], SRCCOPY ) //13369376
SelectObject( hDCMem2, hOldBmp2 )
SelectObject( hDCMem, hOldBmp )
DeleteDC( hDCMem2 )
DeleteDC( hDCMem )
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot] and 59 guests