我正在尝试在画布上绘制字体图标。我正在使用Ionicons字体。我所得到的只是屏幕上的一个矩形。

var
  x1, y1: integer;
  xChr: WideChar;
begin

  x1 := 10;
  y1 := 10;

  fMaleIcon := $f202;
  fFemailIcon := $f25d;

  if xRep.Male then
    xChr := Char(fMaleIcon)
  else
    xChr := Char(fFemaleIcon);

  xCanvas.TextOut(x1, y1, xChr);
end;


我究竟做错了什么?

谢谢-史蒂夫

最佳答案

空矩形表示您使用的字体不包含这些字符的字形。您必须使用可以的字体。

您的代码相当复杂。我会这样写:

var
  xChr: Char;
begin
  if xRep.Male then
    xChr := #$f202;
  else
    xChr := #$f25d;

  xCanvas.TextOut(10, 10, xChr);
end;


也许:

const
  GenderChars: array [Boolean] of Char = (#$f25d, #$f202);
....
xCanvas.TextOut(10, 10, GenderChars[xRep.Male]);


您可能想声明一个枚举类型来保存您的性别信息,而不是一个Boolean

08-24 20:21