Is TFPImageCanvas.StretchDraw slow lazarus / 39-Graphics ---------------------------------------------------------------------- Zaher · 2019-12-28 11:04 My project is small bitmap font editor, I am adding new control to edit small png transparent image with alpha pixles. Drawing pixels started being slow at size > 64, with scaling it 10 times here the part of code of painting it Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i var  Img: TBitmap;  fpimage: TLazIntfImage;begin  if IsChanged then  begin    IsChanged := False;    if (PaintTool <> nil) and not (ptsDirect in PaintTool.Style) then    begin      ScrachImage.CopyPixels(FImage);    PaintTool.Paint(FScrachCanvas);      fpimage := ScrachImage;    end    else      fpimage := Image;     ScaledImage.CopyPixels(BackgroundImage);    ScaledCanvas.DrawingMode := dmAlphaBlend;    //ScaledCanvas.Interpolation := TFPBoxInterpolation.Create; moved to after create ScaledCanvas    ScaledCanvas.StretchDraw(0, 0, ScaledImage.Width, ScaledImage.Height, fpimage);  end;   Img := TBitmap.Create;  try    Img.LoadFromIntfImage(ScaledImage);    vCanvas.Draw(0, 0, Img);  finally    Img.Free;  end;end;  and images created here Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i   FImage := TLazIntfImage.Create(cDefaultWidth, cDefaultHeight, [riqfRGB, riqfAlpha]);  FCanvas := TFPImageCanvas.Create(FImage);  FDrawer := TIntfFreeTypeDrawer.Create(FImage);  FFont := TFreeTypeFont.Create;  FFont.Name := 'c:\Windows\fonts\Arial.ttf';  FFont.SizeInPixels := 9;  FFont.Hinted := False;  FFont.ClearType := False;  FFont.Quality := grqLowQuality;   FScrachImage := TLazIntfImage.CreateCompatible(FImage, cDefaultWidth, cDefaultHeight);  FScrachCanvas := TFPImageCanvas.Create(FScrachImage);   ScaledImage := TLazIntfImage.CreateCompatible(ScrachImage, ScrachImage.Width * DotSize, ScrachImage.Height * DotSize);  ScaledCanvas := TFPImageCanvas.Create(ScaledImage);  ScaledCanvas.Interpolation := TFPBoxInterpolation.Create;   BackgroundImage := TLazIntfImage.CreateCompatible(ScrachImage, ScrachImage.Width * DotSize, ScrachImage.Height * DotSize);  BackgroundCanvas := TFPImageCanvas.Create(BackgroundImage);   FHistory := TntvHistory.Create;   SetSize(cDefaultWidth, cDefaultHeight);  my project is opensource https://github.com/parmaja/minictrls/blob/mas ter/native/ntvPixelGrids.pas#L612 Where is my fault, or Is there any way to make it faster painting or generating scaled image?