Jump to content
Sign in to follow this  
Stas

[TfgBitmap] Canvas.FillText

Recommended Posts

Здравствуйте, обнаружил неприятную особенность отрисовки текста.

Охватило меня желание нарисовать текст в круге.

procedure TFormMain.fgButton1Tap(Sender: TObject);
var B:TfgBitmap;
    Sz:Integer;
begin
B:=TfgBitmap.Create;
Sz:=128;
B.Size:=Tsize.Create(Sz,Sz);
B.Canvas.Fill.Color:=TAlphaColorRec.Green;
B.Canvas.FillCircle(B.Size.cx/2,B.Size.cy/2,B.Size.cx/2);
B.Canvas.Font.Size:=Sz/2;
B.Canvas.Fill.Color := TAlphaColorRec.Red;
B.Canvas.Fill.Kind := TfgBrushKind.Solid;
B.Canvas.FillText(B.Bounds,'100',False);
TfgAssetsManager.Current.AddBitmap('test',B);
fgImage1.ImageName:='test';
end;

И показать его на картинке.

И не получилось

Спасибо

Screenshot_2020-01-22-17-30-36.png

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Similar Content

    • By s.fedotenko@gmail.com
      xx_1 := 0; yy_1 := 0; xx := 0; i := 0; APoints:=nil; while xx < pCanvas.Width do begin xx := i * (1 / 100); yy := (pCanvas.Height / 2) - 100 * sin(2 * pi * 0.05 * i / 100); pCanvas.DrawLine(pointf(xx_1, yy_1), pointf(xx, yy)); SetLength(APoints, Length(APoints) + 1); APoints[Length(APoints) - 1] := pointf(xx, yy - 50); xx_1 := xx; yy_1 := yy; inc(i); end; if Length(APoints) > 0 then pCanvas.DrawLines(APoints); рисуется функция двумя способами:
      через DrawLine - нормально
      через DrawLines -нет
      Project_TestBM.zip
    • By s.fedotenko@gmail.com
      Здравствуйте.
      Имеем код:
      procedure TFormMain.fgPaintBox1Paint(Sender: TObject; const ACanvas: TfgCanvas); var aBm: TFgBitMap; begin try aBm := TFgBitMap.Create; aBm.Size := Tsize.Create(round(fgPaintBox1.Width), round(fgPaintBox1.Height)); aBm.Canvas.FillColor(TAlphaColorRec.Gray); aBm.Canvas.Stroke.Kind := TfgBrushKind.Solid; aBm.Canvas.Stroke.Color := TAlphaColorRec.Red; aBm.Canvas.Fill.Kind := TfgBrushKind.Solid; aBm.Canvas.Fill.Color := TAlphaColorRec.Yellow; aBm.Canvas.DrawCircle(aBm.Width / 2, aBm.Height / 2, aBm.Width / 2); ACanvas.DrawBitmap(aBm, 0, 0); finally aBm.DisposeOf; aBm := nil; end; end; Скэйл устройства =2.
      получили результат:

      Два вопроса:
      1. на PaintBox битмап выводится с размерами в 2 раза меньше. Насколько я понял это связано со скэйлом устройства, и что бы битмап отобразился на весь PaintBox на экране, нужно задавать физические размеры битмапа в 2 раза (для данного устройства) больше. Где можно узнать скэйл устройства, что бы задать размеры битмапа соответствующие выводу на PaintBox? 
      2. Не очень понятно, почему примитивы на битмапе рисуются со скэйлом устройства?  
    • By s.fedotenko@gmail.com
      Здравствуйте.
      При установке размеров битмапа через свойства .Width и .Height происходит исключение:

       
       
       
       
       
       
       
       
       
       
       
       
       
       
      Через свойство .Size - размеры устанавливаются нормально.
    • By Stas
      Добрый день
      S:=TMemoryStream.Create; try Bitmaps.Bitmaps[1].SaveToStream(S); Bitmaps.Bitmaps[1].SaveToFile(TPath.GetTempFileName+'.jpg'); //Файл 0 байт S.Position:=0; S.SaveToFile(TPath.GetTempFileName+'.jpg');// Файл 4мб finally S.Free; end; Внимание вопрос, почему ?
      Спасибо
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...