![]() |
Alternativa a TEXTOUT que soporte Unicode
Buenos días,
Estoy modificando mi aplicación para que sea capaz de presentar textos UNICODE en pantalla. La aplicación en concreto debe generar un bitmap a partir del texto almacenado en un widestring. El problema que me encuentro es que hasta ahora utilizaba el método TEXTOUT del canvas para generar el texto en el bitmap, y por lo visto esta opción no soporta UNICODE, con lo cual se pierden los caracteres especiales. ¿Qué alternativa podría utilizar? Es que no estoy muy puesto en cuanto a representación gráfica y aunque he estado mirando la documentación, no me hago una idea... Pido disculpas... Os dejo un ejemplo del código para que tengáis una idea más clara: Código:
AuxBitmap := TBitmap.Create; Un saludo. |
Cita:
Pregunto: ¿No será que el tipo de Font que le asignas al Canvas no soporta los caracteres especiales que intentas meter? Podrías hacer pruebas asignando distintos tipos de fonts y comprobar los resultados. Saludos |
Muchas gracias por tu apreciación, ArdiIIa.
La fuente que estaba utilizando era la Times New Roman. De todas formas, he probado con la Tahoma (que es la que por defecto utilizan los componentes TNT) y da el mismo resultado. En todos los cambios de rutinas que he realizado me he dado cuenta que si en la función, el parámetro lo recibe una variable string en lugar de widestring, se pierden esos caracteres especiales. Y en el caso del TextOut la llamada sólo permite enviar string. De ahí que achacara ese comportamiento a eso... A que aunque yo le envío el widestring, TextOut lo toma como un string... Código:
procedure TextOut(X: Integer; Y: Integer; const Text: string); Gracias de nuevo. |
Entonces la forma de operar tal vez tenga que ser diferente....
En vez de trabajando directamente con el Canvas del Bitmap seguramente obtengas otros resultados trabajando con otra llamada del gdi32...
|
Perdona por mi absoluta ignoracia en el tema ArdiIIa, pero, ¿de qué forma podría "enlazar" ese DC con un bitmap?
Es la primera vez que veo eso del Device Context... :S Muchas gracias. |
El DC (device context) se obtiene mediante la función GetDC y sirve para obtener el handle del objeto sobre el que queremos operar.
En tu caso ya lo tienes.... y no es necesario hacer nada mas.. Perdona que anteriormente no te lo pusiera mas claro... |
Me respondo a mí mismo... He utilizado tu llamada y en lugar del DC he puesto el Handle del canvas del bitmap de esta forma:
Código:
TextOutW(AuxBitmap.Canvas.Handle, 0, 0, PWideChar(Texto), Length(Texto)); Muchísimas gracias. |
MUCHISIMAS GRACIAS!!!!
TODO PERFECTO ENTONCES... Mil gracias por tu respuesta... Veía el asunto muy negro (o en chino, para seguir con la temática unicode)... ;) |
:( Pues vaya, mientras estaba creando un ejemplo me pisaron la respuestaa
Hasta tenia preparada una explicación: Cita:
|
Cita:
Y pensaba... "verás cuando venga seoane.:p " |
De todas formas, gracias a los dos... :)
Seguro que servirá a algún novato como yo en estos temas... |
La franja horaria es GMT +2. Ahora son las 15:39:46. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi