On 2/24/25 20:22, Giuliano Colla via fpc-devel wrote:
I have an application where I need to rotate an image for displaying in an LCL image. The image is a clock face, the image to rotate is each of the hands. I can get the bitmap from the source LCL image, and copy the rectangle from the LCL image canvas to the FPImage canvas. I can rotate it, but I'm unable to copy back the resulting image to the LCL canvas, because I'm told that theĀ  TFPImageCanvas is an "incompatible type" with TCanvas.

If you have a FPImage canvas, then you should have a TFPCustomImage.
Preferably a LazIntfImage, preferably initialized to the same format as the LCL widgetset.

uses ..., IntfGraphics, LCLType, LCLIntf;

var
  LazImg: TLazIntfImage;
  BitmapHnd, DummyHnd: HBITMAP;
  LCLCanvas: TCanvas;
  RotatedWidth, RotatedHeight, x, y: Integer;
begin
  LCLCanvas:=Canvas;
  RotatedWidth:=100;
  RotatedHeight:=100;
  x:=0;
  y:=0;

  // create a memory image
  LazImg := TLazIntfImage.Create(0,0,[]);
  LazImg.DataDescription := GetDescriptionFromDevice(LCLCanvas.Handle,
     RotatedWidth,RotatedHeight);
  // draw the rotated image to the LazImg ...

  // create the widgetset bitmap
  LazImg.CreateBitmaps(BitmapHnd, DummyHnd, True);
  StretchBlt(LCLCanvas.Handle,x,y,LazImg.Width,LazImg.Height,
      BitmapHnd, 0,0,LazImg.Width,LazImg.Height, LCLCanvas.CopyMode);
end;

Mattias
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to