![]() |
"Polygon" Komponente
Hallo Zusammen!
Ich suche eine "Polygon" Komponente. Sollte Eigenschaften wie z.B. ein Panel haben, jedoch die Form sollte wie ein Polygon aussehen (also z.B. Stern, Rechteck, Kreis, Polygon, ...). Habe folgende Anforderungen an eine solche "Komponente":
Möchte nur grafische Objekte auf einem Canvas haben und diese individuell ansprechen können. Danke für eure Hilfe... |
AW: "Polygon" Komponente
In den Demos zu GDIPlus waren Beispiele dabei, die Paths und Clipping verwendet haben. Damit dürfte sich Dein Vorhaben realisieren lassen. Ich finde gerade keinen exklusiven Link zu den Sourcen, die ich bei meinem
![]() |
AW: "Polygon" Komponente
Danke Detlef! Schau ich mir gleich an.
Ich glaub mit FireMonkey wär das einfacher - kann es aber bei meinem derzeitigen Projekt nicht nutzen... :? |
AW: "Polygon" Komponente
Mir fällt gerade ein: wäre
![]() |
AW: "Polygon" Komponente
Zitat:
(Konnts mir nicht verkneifen :duck:) |
AW: "Polygon" Komponente
Wenn das ein Gag war, habe ich ihn nicht verstanden :gruebel:
|
AW: "Polygon" Komponente
Sollte eine Anspielung auf das Lied "Junge" von den Ärzten sein:
Zitat:
Aber das kam mir direkt in den Kopf als ich deinen Post gelesen hab :mrgreen: |
AW: "Polygon" Komponente
ganz schnell, einfach und billig wenn Du eine Komponente bastelst der Du ein gegf. zur laufzeit erstelltest Bitmap zuweist: (im Beispiel wird ein vorhandenes genommen)
Delphi-Quellcode:
function CreateBMPRegion(Bmp: TBitmap): THandle;
Type RGBArray=Array [0..1000000] of TRGBTriple; pRGBArray=^RGBArray; var X, Y, Beginn:Integer; Line: PRGBArray; Transp: TRGBTriple; Exclude: THandle; begin Bmp.PixelFormat := pf24Bit; Result := CreateRectRGN(0, 0, Bmp.Width, Bmp.Height); for Y := 0 to Bmp.Height - 1 do begin Line := Bmp.Scanline[Y]; if Y = 0 then Transp := Line[0]; Beginn := -1; for X := 0 to Bmp.Width do begin if (X <> Bmp.Width) and (Line[X].rgbtBlue = Transp.rgbtBlue) and (Line[X].rgbtGreen = Transp.rgbtGreen) and (Line[X].rgbtRed = Transp.rgbtRed) then begin if Beginn = -1 then Beginn := X; end else begin if Beginn > -1 then begin Exclude := CreateRectRGN(Beginn, Y, X, Y + 1); try CombineRGN(Result, Result, Exclude, RGN_DIFF); Beginn := -1; finally DeleteObject(Exclude); end; end; end; end; end; end; procedure TForm1.Button1Click(Sender: TObject); var rg:Hrgn; begin rg := CreateBMPRegion(Image1.Picture.Bitmap); SetWindowRGN(Panel1.Handle,rg,true); DeleteObject(rg); end; |
AW: "Polygon" Komponente
Achsoooo :)
|
AW: "Polygon" Komponente
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz