Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   "Polygon" Komponente (https://www.delphipraxis.net/163764-polygon-komponente.html)

wjjw 14. Okt 2011 12:35

"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":
  • gute Performance (brauche ca. 100 Komponenten auf einem Panel)
  • Eigenschaft: Form (Punktliste oder vordefinierte Styles [Stern, Rechteck, Kreis, ...])
  • Weitere Eigenschaften: Farbe, Text (Caption)
  • Transparent (in keinem sichtbaren "Rechteck" Objekt)
  • Aktionen: wie Buttons oder Panels (OnClick, ...)
Es muss ja nicht unbedingt eine Komponente sein, vielleicht gibt es einen anderen Lösungsansatz..
Möchte nur grafische Objekte auf einem Canvas haben und diese individuell ansprechen können.

Danke für eure Hilfe...

DeddyH 14. Okt 2011 12:45

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 runden Button verwendet habe, aber wenn Du da das größere Archiv herunterlädst, müssten sie samt der Demos IIRC enthalten sein.

wjjw 14. Okt 2011 13:04

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... :?

DeddyH 14. Okt 2011 13:08

AW: "Polygon" Komponente
 
Mir fällt gerade ein: wäre das hier nichts für Dich?

Neutral General 14. Okt 2011 13:20

AW: "Polygon" Komponente
 
Zitat:

Zitat von DeddyH (Beitrag 1130468)
Mir fällt gerade ein: wäre das hier nichts für Dich?

..ein eiiigener Button! ♪♫

(Konnts mir nicht verkneifen :duck:)

DeddyH 14. Okt 2011 13:23

AW: "Polygon" Komponente
 
Wenn das ein Gag war, habe ich ihn nicht verstanden :gruebel:

Neutral General 14. Okt 2011 13:31

AW: "Polygon" Komponente
 
Sollte eine Anspielung auf das Lied "Junge" von den Ärzten sein:

Zitat:

Es ist noch nicht zu spät, dich an der Uni einzuschreiben
Du hast dich doch früher so für Tiere interessiert, wäre das nichts für dich, eine eigene Praxis?
War jetzt auch nicht soo lustig :oops:
Aber das kam mir direkt in den Kopf als ich deinen Post gelesen hab :mrgreen:

Bummi 14. Okt 2011 13:32

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;

DeddyH 14. Okt 2011 13:32

AW: "Polygon" Komponente
 
Achsoooo :)

Jens01 14. Okt 2011 15:14

AW: "Polygon" Komponente
 
Meinst Du sowas!? http://angusj.com/delphi/gr32_lines.php
Das 2.Demo "DrawObjects"


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