GARANTIR DESCONTO

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é!


Delphi32

Delphi32

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...
var
  S: WideString;
  R: TRect;
  Flags: UINT;
....
  // veja a Ajuda do Delphi para DrawText
  DrawTextW(Canvas.Handle, PWideChar(@S[1]), Length(S), R, Flags);
...
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).


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é!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar