Fórum Escrever WideString em Canvas #294951
09/09/2005
0
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
Curtir tópico
+ 0
Responder
Posts
09/09/2005
Massuda
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); ...
Responder
Gostei + 0
09/09/2005
Delphi32
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é!
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)