2017-08-01 3 views
1

fixedを参照してください。固定:canvas.filltext with fmxフォントはブロック背景で囲まれています

firemonkeyでテキストを処理する方法に関する記事が見つかりました。グラフィックスイメージがあり、ラベルを貼りたい。私は.filltextを使ってwin32をテストし、すべてがうまくいった。しかし、私がアンドロイドを走らせると、テキストは背景の白いブロックに過ぎません。明らかに、私はフォントが使用しているブラシを設定する必要がありますが、それはどのように私には分かりません。 (私は正しくアンドロイドのスケーリングを介してビットマップのサイズを変更し、私のdrawpolygonが期待どおりに動作しています)

コードのセグメントは以下の通りです。

Image1.bitmap.Canvas.BeginScene; 
    Image1.bitmap.canvas.Clear(TAlphaColors.Black); 
    Image1.bitmap.Canvas.Stroke.Thickness := 1; 
    Image1.bitmap.Canvas.Stroke.Color := TAlphaColorRec.Yellow; 
    Image1.bitmap.Canvas.DrawPolygon(FPoints2, 1);    // polygon 
    // now testing text 
    Canvas.Font.Size := 40; 
    Image1.bitmap.mRect.Create(0, 0, (image1.width),(image1.height)); 
    Image1.bitmap.Canvas.filltext(mRect, 'Hello Text!', false, 1, 
     [TFillTextFlag.RightToLeft],TTextAlign.Center, TTextAlign.Trailing); 
    Image1.bitmap.Canvas.EndScene; 
+0

トム、このコードはいくつかのソースから開発され、持ち上げられ、変更されています。 – rebible

+0

投稿の下にコメントと詳細が追加されました.... – rebible

答えて

1

ボトムライン...あなたは、Android上でテキストの色とその周りの背景をfilltext使用している場合は、そのように設定されています。

Image1.bitmap.Canvas.Fill.Color := TAlphaColors.Yellow;//text color 
Image1.Bitmap.Canvas.Fill.DefaultColor:=TAlphaColors.black; //background 

これはどこImage1.bitmap.Canvas.Stroke.ColorセットWin32プラットフォームと異なっていますテキストの色とそれはテキストの周りに透明な背景を持っているように見える...

だから他の誰もがここでこの物と戦うのは、アンドロイドとwin32のコードを動作させる。誰かが有益なコメントをいただいていれば、私は特に透明であると背景を設定することができて感謝しています。私はインターネット上のどこにでもこの情報を見つけることができませんでした。ありがとうrobert

procedure TMainFrm.draw_waveform; 
var 
    mrect:trect;  //yellow waveform on black background with yellow text 

begin 
    waveformunit.init(image1); // the two steps commented below done elsewhere 
    // VERY important to do this for android otherwise it doesn't work!!! 
    // Image.Bitmap.SetSize(Trunc(Image.Width * Image.Canvas.Scale), 
           // Trunc(Image.Height * Image.Canvas.Scale)); 
    // Image.Bitmap.canvas.Clear(TAlphaColors.black); 
    to_polygon; 

    Image1.bitmap.Canvas.BeginScene; 
    Image1.Bitmap.canvas.Clear(TAlphaColors.black); 
    Image1.bitmap.Canvas.Stroke.Thickness := 1; 
    Image1.bitmap.Canvas.Stroke.Color := TAlphaColorRec.Yellow; //polygon line color 
    Image1.bitmap.Canvas.DrawPolygon(FPoints2, 1);    // polygon 
    //now test text 
    Image1.Bitmap.canvas.Stroke.Kind := TBrushKind.bkSolid; 
    Image1.Bitmap.canvas.Stroke.Thickness := 1; 
    Image1.bitmap.Canvas.Fill.Color := TAlphaColors.Yellow;  //text color 
    Image1.Bitmap.Canvas.Fill.DefaultColor:=TAlphaColors.black; // to match background 
    Image1.Bitmap.Canvas.Font.Size:=36; 
    Image1.Bitmap.Canvas.Font.Family:='Arial'; 
    Image1.Bitmap.Canvas.Font.Style:=[TFontStyle.fsbold]; 
    Image1.bitmap.canvas.Blending:=false; 
    Image1.bitmap.Canvas.Font.Size := 40; 
     mRect.Create(0, 0,round(image1.width),round(image1.height)); 
    Image1.bitmap.Canvas.filltext(mRect, 'Hello Text!', false, 1, 
     [TFillTextFlag.RightToLeft],TTextAlign.Center, TTextAlign.Trailing); 
    Image1.bitmap.Canvas.EndScene; 

    //inc(numberdrawn); 
end; 
関連する問題