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 ![]()
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 ![]()
Por si te sirve, yo uso este para poner las marca de agua
Gracias por tu respuesta, pero lo que necesito es poder incluir un texto a una fotografía desde una aplicación FW, para integrarla dentro de otro sistema mas amplio que ya está funcionando.
#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 ENDDUMPMuchas gracias, Paco
me has dado algo para empezar ¡que no es poco!
saludos ![]()
:
// 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()¿Como haces para leer el pensamiento?
En este momento estaba dandole vueltas precisamente a eso.
Gracias de nuevo!!!!!!!!! ![]()
Paco,
hay alguna manera de hacer este cambio sobre el bmp, pero que este bmp este en un dialogo y en lugar de guardarlo en un archivo volverlo a poner al mismo bmp, es decir rediibujar el bmp con el cambio.
Un ejemplo, si tienes un bmp en un dialogo le haces un cuantos floofill (es decir lo cambias) y luego mueves el dialogo o pones una ventana sobre ell, los cambios desaparecen, entonces podriamos pensar en colocar en el ON PAINT algo que repinte para volver a obttener el bmp con los cambios, pero esto dan resultados inesperados, por lo que hice fue hacer el cambio, guardalrlo a disco, recargar el bmp del archivo y lla tengo todo ok, pero no pude hacerlo sin utilizar un archivo temporal, claro no es mucho drama ello, pero tengo la curiosidad de como se podria hacer sin archivo temporal.
un saludo
Marcelo
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 )Paco,
gracias, lo probare
saludos
Marcelo