2016-05-10 3 views
1

私はキャンバスにフォントアイコンを描こうとしています。私はIoniconsフォントを使用しています。私が得るのは、画面上に長方形があるだけです。Delphi - Unicode文字を描画しますか?

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; 

私は間違っていますか?

おかげで - スティーブ

+1

どのデルファイのバージョンですか?なぜあなたは 'xChr:WideChar'を宣言して、2つの定数を' Char'にキャストしていますか? –

+1

私は、 'Char'は' WideChar'のエイリアスであると推論します。なぜなら、整数は 'Char'と代入互換ではないからです。その型には 'WideChar'ではなく' Char'を使うべきです。文字リテラルに '#$ f202'と'#$ f25d'を使うべきです。 –

+0

今私は本当に*愚かな気がする - 私はフォント名のためにタイプミスをした!!!! –

答えて

2

は空の矩形は、使用しているフォントがそれらの文字のグリフを含んでいないことを意味します。フォントを使用する必要があります。

あなたのコードはむしろ複雑です。

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かもしれません私はこのようにそれを記述します。

関連する問題