Delphi - 如何绘制Unicode字符?

4

我正在尝试在画布上绘制字体图标。 我正在使用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;

我做错了什么?

谢谢 - Steve


1
什么Delphi版本?为什么要声明 xChr: WideChar 然后将两个常量转换为 Char - Ken White
1
我推断CharWideChar的别名,并且需要进行强制转换,因为整数不能与Char兼容。您应该使用Char而不是WideChar类型。您应该使用#$f202#$f25d作为字符字面量。 - David Heffernan
现在我感觉真的很愚蠢 - 我打错了字体名称!!! - Steve Maughan
1个回答

7

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

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

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]);

你可以声明一个枚举类型来存储你的性别信息,而不是使用布尔类型。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接