![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
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; AuxBitmap.Canvas.Font.Name := NombreFuente; AuxBitmap.Canvas.Font.Size := PuntosPant; AuxBitmap.Canvas.Font.Style := EstiloFuente; //Aquí asigno el Charset libIncluirCharset(AuxBitmap.Canvas.Font,Charset); //Aquí obtengo las dimensiones que tendrá el bitmap a partir de la fuente utilizada dibTextWidthHeight(auxbitmap.canvas,texto,anchoF,altoF); AuxBitmap.Width := anchoF; AuxBitmap.Height := altoF; //Aquí es donde TEXTO, que es unicode, pierde los caracteres especiales en pantalla... AuxBitmap.Canvas.TextOut(0,0,Texto); //////////////////////////////////////////// Un saludo. |
#2
|
||||
|
||||
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
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO |
#3
|
||||
|
||||
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. Última edición por MDSato fecha: 16-03-2007 a las 13:14:50. |
#4
|
||||
|
||||
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...
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO |
#5
|
||||
|
||||
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. |
#6
|
||||
|
||||
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...
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO |
#7
|
||||
|
||||
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. |
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Unicode Vs Delphi | PTW | Varios | 0 | 23-01-2006 15:01:29 |
Unicode | PTW | Varios | 0 | 22-01-2006 12:30:31 |
Unicode | arantzal | Varios | 2 | 19-09-2005 17:44:07 |
Unicode | Sworied | MySQL | 1 | 12-08-2004 07:27:38 |
Unicode | pacogp | Varios | 2 | 17-02-2004 14:02:35 |
![]() |
|