【问题标题】:Delphi - Draw a Unicode Character?Delphi - 绘制一个 Unicode 字符?
【发布时间】:2016-09-05 21:42:06
【问题描述】:

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

我做错了什么?

谢谢 - 史蒂夫

【问题讨论】:

  • 什么Delphi版本?你为什么要声明xChr: WideChar,然后将你的两个常量转换为Char
  • 我推断CharWideChar 的别名,并且需要强制转换,因为整数与Char 的赋值不兼容。您应该使用 Char 而不是 WideChar 作为类型。您应该使用 #$f202#$f25d 作为字符文字。
  • 现在我觉得真的很愚蠢 - 我的字体名称打错了!!!!

标签: delphi unicode


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    相关资源
    最近更新 更多