Jump to content

s.fedotenko@gmail.com

Members
  • Posts

    133
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by s.fedotenko@gmail.com

  1.     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

  2. Здравствуйте.

    Имеем код:

    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.

    получили результат:

    0-02-05-b673d0715adf4d0c632ac5b2960e2e97d6ac5960138d947914e43a1edab0b820_960b81d5.thumb.png.f044a4ca0eac3312254e7a2d605e8ece.png

    Два вопроса:

    1. на PaintBox битмап выводится с размерами в 2 раза меньше. Насколько я понял это связано со скэйлом устройства, и что бы битмап отобразился на весь PaintBox на экране, нужно задавать физические размеры битмапа в 2 раза (для данного устройства) больше. Где можно узнать скэйл устройства, что бы задать размеры битмапа соответствующие выводу на PaintBox? 

    2. Не очень понятно, почему примитивы на битмапе рисуются со скэйлом устройства?  

  3. 1 час назад, s.fedotenko@gmail.com сказал:

    При установке размеров битмапа через свойства .Width и .Height происходит исключение:

    Разобрался: исключение возникает, так как устанавливается размер одной из сторон, когда другая сторона битмапа еще равна 0. Правильно изначально устанавливать размеры обоих сторон вместе через свойство .Size.

    Это непривычно, т.к. в обычном TBitMap (на Delphi) начальное задание размеров через Width и Height не вызывало исключений или был понятный метод .SetSize

×
×
  • Create New...