Ver Mensaje Individual
  #9  
Antiguo 16-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Pues vaya, mientras estaba creando un ejemplo me pisaron la respuestaa

Código Delphi [-]
var
  Bitmap: TBitmap;
  Size: TSize;
  Texto: WideString;
begin
  Texto:= #$06E9 + #$06E9; // Caracteres arabes
  Bitmap:= TBitmap.Create;
  try
    Bitmap.Canvas.Font.Name:= 'Arial';
    Bitmap.Canvas.Font.Size:= 16;
    Bitmap.Canvas.Font.Style := [];
    // Version Unicode de GetTextExtentPoint32
    GetTextExtentPoint32W(Bitmap.Canvas.Handle,PWideChar(Texto),
      Length(Texto),Size);
    Bitmap.Width:= Size.cx;
    Bitmap.Height:= Size.cy;
    // Version Unicode de TextExtent
    ExtTextOutW(Bitmap.Canvas.Handle, 0, 0, 0, nil, PWideChar(Texto),
      Length(Texto), nil);
    // Aqui yo lo dibujo para ver el resultado
    Canvas.Draw(0,0,Bitmap);
  finally
    Bitmap.Free;
  end;
end;

Hasta tenia preparada una explicación:
Cita:
La mayoria de la funciones de la API que tienen que tratar con texto tienen dos versiones la ANSI y la Unicode. El metodo TextOut del Canvas utiliza la funcion ExtTextOut en su version ANSI (ExtTextOutA), si necesitas trabajar con Unicode tendras que usar la otra version (ExtTextOutW).
Tengo que ser mas rápido

Última edición por seoane fecha: 16-03-2007 a las 15:34:08.
Responder Con Cita