Advertisement
jpfassis

MyCircle -Com Image - Delphi - GDI

Apr 1st, 2020
995
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.51 KB | None | 0 0
  1. unit UMyCircle;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls,
  7.   Forms, ExtCtrls;
  8.  
  9. type
  10.   TMyCircle = class(TGraphicControl)
  11.   private
  12.     procedure DrawCircle(const ACanvas: TCanvas);
  13.   protected
  14.     { Protected declarations }
  15.     procedure Paint; override;
  16.     procedure Resize; override;
  17.   public
  18.   { Public declarations }
  19.   constructor Create(AOwner: TComponent); override;
  20.  
  21.   end;
  22.  
  23. procedure Register;
  24.  
  25. implementation
  26.  
  27. uses
  28.   Math, Consts, GDIPOBJ, GDIPAPI;
  29.  
  30. procedure Register;
  31. begin
  32.   RegisterComponents('My Componentes', [TMyCircle]);
  33. end;
  34.  
  35.  
  36. { TMyCircle }
  37.  
  38. constructor TMyCircle.Create(AOwner: TComponent);
  39. begin
  40.   inherited;
  41.   ControlStyle := ControlStyle + [csFramed, csOpaque];
  42.   { default values }
  43.   Width := 100;
  44.   Height := 100;
  45. end;
  46.  
  47. procedure TMyCircle.DrawCircle(const ACanvas: TCanvas);
  48. var
  49.   g: TGPGraphics;
  50.   gOut : TGPGraphics;
  51.   imgInput : TGPImage;
  52.   imgOutput : TGPBitmap;
  53.   tb: TGPTextureBrush;
  54.   Rect : TGPRect;
  55. begin
  56.  
  57.   try
  58.     imgInput :=TGPImage.Create('C:\Trabalho\Meus Componentes Delphi\MyItemMenu\PaisagemBMP.bmp');
  59.     //cria um bitmap com o tamanho desejado
  60.     imgOutPut:=TGPBitmap.Create(Width, Height, PixelFormat32bppARGB);
  61.     //cria grafico para desenhar no bitmap
  62.     g := TGPGraphics.Create(imgOutPut);
  63.     //seta alta qualidade
  64.     g.SetInterpolationMode(InterpolationModeHighQualityBicubic);
  65.     g.SetPixelOffsetMode(PixelOffsetModeHighQuality);
  66.     g.SetSmoothingMode(SmoothingModeHighQuality);
  67.     //seta composição modo copy
  68.     g.SetCompositingMode(CompositingModeSourceCopy);
  69.     //cria a imagem
  70.     g.DrawImage(imgInput, 0, 0, imgOutput.GetWidth, imgOutput.GetHeight);
  71.     //transforma imgOut em textura
  72.     tb := TGPTextureBrush.Create(imgOutPut);
  73.  
  74.     //cria grafico para desenhar no canvas
  75.     gOut := TGPGraphics.Create(ACanvas.Handle);
  76.     //seta alta qualidade
  77.     gOut.SetInterpolationMode(InterpolationModeHighQualityBicubic);
  78.     gOut.SetPixelOffsetMode(PixelOffsetModeHighQuality);
  79.     gOut.SetSmoothingMode(SmoothingModeHighQuality);
  80.     //cria um retangulo
  81.     Rect := MakeRect(0, 0, Width , Height);
  82.     //cria elipse usando a textura no tamanho do retangulo
  83.     gOut.FillEllipse(tb, Rect);
  84.   finally
  85.     freeandnil(g);
  86.     freeandnil(gOut);
  87.     freeandnil(imgInput);
  88.     freeandnil(imgOutput);
  89.     freeandnil(tb);
  90.   end;
  91.  
  92. end;
  93.  
  94. procedure TMyCircle.Paint;
  95. begin
  96.   inherited;
  97.     DrawCircle(Canvas);
  98. end;
  99.  
  100. procedure TMyCircle.Resize;
  101. begin
  102.   inherited;
  103.   Repaint;
  104. end;
  105.  
  106. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement