Escrever WideString em Canvas
Olá!
Existe alguma forma de escrever uma WideString em um Canvas. Exemplo: Image1.Picture.Bitmap.Canvas.TextOut(8,8,Texto);
Sendo que Texto seria uma variável WideString. Na verdade o que eu estou tentando fazer é transformar um texto WideString em imagem. Existe alguma outra forma de fazer isso?
Até!
Existe alguma forma de escrever uma WideString em um Canvas. Exemplo: Image1.Picture.Bitmap.Canvas.TextOut(8,8,Texto);
Sendo que Texto seria uma variável WideString. Na verdade o que eu estou tentando fazer é transformar um texto WideString em imagem. Existe alguma outra forma de fazer isso?
Até!
Delphi32
Curtidas 0
Respostas
Massuda
09/09/2005
Acho que poucas funções da VCL estão prontas para lidar com Unicode (talvez nenhuma).
No caso, você não pode usar TCanvas.TextOut porque esse método assume que irá escrever uma string normal (ANSI).
Acho que a alternativa é usar as rotinas de API do Windows para Unicode. Por exemplo, para escrever num canvas, faça algo assim...Note o ´W´ no final do nome da função... várias funções da API do Windows que usam strings vem em duas versões, uma para strings ANSI (e que são normalmente chamadas pelo Delphi) e outra para strings Unicode (tem o mesmo nome da versão ANSI, só que tem o ´W´ no final do nome).
No caso, você não pode usar TCanvas.TextOut porque esse método assume que irá escrever uma string normal (ANSI).
Acho que a alternativa é usar as rotinas de API do Windows para Unicode. Por exemplo, para escrever num canvas, faça algo assim...
var S: WideString; R: TRect; Flags: UINT; .... // veja a Ajuda do Delphi para DrawText DrawTextW(Canvas.Handle, PWideChar(@S[1]), Length(S), R, Flags); ...
GOSTEI 0
Delphi32
09/09/2005
Massuda, seu código funcionou direitinho, mas só pra ficar registrado aqui caso outras pessoas precisem da mesma coisa, logo depois que postei o tópico aqui eu fui dar uma vasculhada pela net e achei na Code Central uma unit que implementa a classe TWideCanvas. Nessa unit tem inclusive rotinas para escrever WideStrings em um TCanvas. Segue a URL:
[url]http://cc.borland.com/Item.aspx?id=17762[/url]
Valeu pela ajuda! Até!
[url]http://cc.borland.com/Item.aspx?id=17762[/url]
Valeu pela ajuda! Até!
GOSTEI 0