Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Agregar texto con canvas a Timage (https://www.clubdelphi.com/foros/showthread.php?t=61748)

pablopessoa 20-11-2008 17:55:37

Agregar texto con canvas a Timage
 
hola a todos!!!
Esto es lo ultimo que me falta para terminar de hacer un editor grafico, pero no me sale. Estuve probando con la funcion TextOut, pero le tenes que pasar el texto a introducir como parametro y no me sirve, por que mi idea es la siguiente:
Tengo un boton el cual cuando se apreta te tiene que dejar ingresar texto en el lienzo ( se apreta el boton, y luego se hace click en el lugar del lienzo donde queres escribir) , por lo tanto no se que es lo que se va a escribir , ni el largo ni nada.
La pregunta es : Como se puede ingresar texto en el timage siguiendo esta idea? si alguien me puede ayudar se lo agradeceria mucho
Saludos!!!

Caral 20-11-2008 18:48:47

Hola
Tal vez esto te de alguna idea.
Es un ejemplo sencillo.
Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
 var
  AnteriorBkMode: integer;
begin
 with Image1.Canvas do begin
  Brush.Color := clRed;
  TextOut(5, 350, 'Fecha de entrada');
  AnteriorBkMode := SetBkMode(Handle, TRANSPARENT);
  TextOut(5, 380, Edit1.Text);
  SetBkMode(Handle, AnteriorBkMode);
end;
end;
Saludos

fjcg02 20-11-2008 22:25:40

No sé si habrá un componente que lo haga, pero podrías crear un TEdit en tiempo de ejecución en el lugar del click, y una vez escrito el texto, hacer el TexOut en el canvas. Lógicamente, tendrías que guardar el texto en una variable y destruir el Tedit.

Saludos

piXelicidio 21-11-2008 05:33:05

Creo que la solución que te da fjcg02 sería la mas conveniente si no quieres complicarte mucho la vida. De otra manera si quieres hacerlo parecido a como lo hace el Paint o el Photoshop entonces deberías tu mismo simular el Edit, utilizando los eventos OnkeyPress para saber el caractér que va escribiendo el usuario e ir insertándoselo a un string mientras dibujas el texto sobre la Imagen con TextOut, recuerda que para que el fondo del texto quede transparente tienes que establecer el estilo de la brocha:
canvas.Brush.Style := bsClear;
Y un último consejo, no sé por que usas TImage, pero cuidado, si cargas un jpg dentro de un TImage no puedes acceder a el con el canvas a no ser que lo conviertas a un Bitmap de alguna forma..

Bueno, esta opcion está compleja pero no imposible.. si lo quieres fácil hazle caso al colega fjcg02 (da un tin de trabajo escribirlo) :)
Saludos

pablopessoa 22-11-2008 16:10:43

Gracias por las respuestas!! voy a probar lo de crear el tedit en ejecucion, me parece que es lo que va a quedar mas parecido a como trabaja el paint.
En cuanto a lo del jpg ya lo tuve en cuenta, al momento de cargar la imagen jpg la convierto en bitmap y listo, no pierde calidad ni nada ( no por lo menos perceptible jeje)
Saludos y gracias!! cualquier cosa les digo


La franja horaria es GMT +2. Ahora son las 00:47:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi