Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Como colocar texto en un TIMAGE (https://www.clubdelphi.com/foros/showthread.php?t=23991)

newbery 04-08-2005 15:55:31

Como colocar texto en un TIMAGE
 
Holas a todos, necesito colocar texto en un TIMAGE como en el paint.
Hacer click donde quiero ponerlo y dejarme escribir en ese momento.
Muchas gracias, saludos.:)

Neftali [Germán.Estévez] 04-08-2005 16:09:23

Para pintarlo por código, puedes hacerlo con un código similar a éste:
Código Delphi [-]
 var
   path:String;
 begin
   // Cargar la imagen
   path := IncludeTrailingBackslash(ExtractFilePath(Application.ExeName)) + 'Splash.BMP';
   Image1.Picture.LoadFromFile(path);  
   // Pintar texto
   Image1.Canvas.Font.Name := 'arial';
   Image1.Canvas.Font.Size := 40;
   Image1.Canvas.Font.Color := clWhite;
   Image1.Canvas.Brush.Style := bsClear;
   Image1.Canvas.TextOut(10, 10, 'Texto de prueba');

Si lo que quieres es que el usuario pueda escribirlo, yo lo que haría sería simularlo con un control mientras el usuario lo escribe (TEdit o similar) y cuando acabe, pones el control invisible y pintas el texto de ésta forma.

dec 04-08-2005 21:18:46

Hola,

Cita:

Empezado por Neftali
Código Delphi [-]
  path := IncludeTrailingBackslash(ExtractFilePath(Application.ExeName)) + 'Splash.BMP';

No es por ser puñetero (bueno, un poco sí que lo es) pero no dejaré decir un par de cosas respecto de la instrucción anterior, muy simples, en realidad no aportan nada, pero, ya digo que no es por ser puñetero...

La primera es que la función "IncludeTrailingBackSlash" en realidad llama a la función "IncludeTrailingPathDelimiter", y en el propio código (¿o era en la ayuda?) se dice que la segunda sustituye a la primera.

Ya ves tú. La segunda es que sobra el uso de la función susomentada, puesto que "ExtractFilePath" devuelve el camino ya con la barra invertida, por lo que "IncludeTrailingBackSlash", esto es, "IncludeTrailingPathDelimiter", en realidad no hace nada.

Por todo lo dicho podría quedar la instrucción como sigue:

Código Delphi [-]
   path := ExtractFilePath(Application.ExeName) + 'Splash.BMP';
Y si se me apura mucho y puesto a ser puñetero, pero, puñetero de verdad, diría que me gusta más algo como lo siguiente:

Código Delphi [-]
   path := ExtractFilePath(ParamStr(0)) + 'Splash.BMP';
Y esto es así como digo porque la clase "Application" se halla en la unidad "Forms", mientras que la función "ParamStr" se halla en la unidad "System", la cual todos sabéis se incluye "por defecto" por Delphi, sin que nosotros tengamos que añadirla. Y no digo más, que hasta lo dicho puede ser demás.

<Sergio> 05-08-2005 02:27:28

Nunca está demás mostrar la mejor forma de hacer las cosas, todo aporte es válido.:)

dec 05-08-2005 02:35:14

Hola,

Cita:

Empezado por <Sergio>
Nunca está demás mostrar la mejor forma de hacer las cosas, todo aporte es válido.:)

Bueno, tampoco quería yo ir tan lejos, ¿eh? ;)


La franja horaria es GMT +2. Ahora son las 18:10:34.

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