Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bild in eine Buttonkomponente?? (https://www.delphipraxis.net/108658-bild-eine-buttonkomponente.html)

STS301 18. Feb 2008 17:19

Re: Bild in eine Buttonkomponente??
 
Zitat:

Zitat von DeddyH
Du könntest das Image laden, abscannen und Dir eine region zusammenbasteln, aber das ist alles Andere als trivial.

bis Image laden komme ich mit, abscannen auch noch aber danach stehe ich auf der Leitung???

wie hast du es eigentlich mit deinem Button gemacht (ich würde es wenn es geht nur ohne GDI+ machen)

unter uns: ich finde die GDi+.dll nicht !!, weder auf msdn noch bei deinem Source :(

@HalloDu
einen "Runden Button" habe ich ja auch schon geschrieben --> .pas am Anfang

DeddyH 18. Feb 2008 17:25

Re: Bild in eine Buttonkomponente??
 
Zur DLL: schau mal hier (am Besten mit dem IE).

STS301 18. Feb 2008 17:33

Re: Bild in eine Buttonkomponente??
 
unter deinem Link steht, dass die Seite weggezogen ist und dann werde ich zu "Windows® Server 2003 SP1 Platform SDK Web Install" verlinkt (mit IE 7).

und kannst du mir vielleicht bei meinem Problem weiterhelfen:

bis Image laden komme ich mit, abscannen auch noch aber danach stehe ich auf der Leitung???

DeddyH 18. Feb 2008 17:35

Re: Bild in eine Buttonkomponente??
 
Du müsstest die Form erkennen und dementsprechend eine Region bilden, aber da schreib ich jetzt keinen Source dazu, das ist mir viel zu aufwändig.

STS301 18. Feb 2008 17:41

Re: Bild in eine Buttonkomponente??
 
na gut danke.
kann mir vielleicht jemand einen Link oder ein Tutorial zu dem von DeddyH angesprochenes Thema geben?

Muetze1 18. Feb 2008 17:48

Re: Bild in eine Buttonkomponente??
 
Delphi-Quellcode:
function CreateBitmapRegion(const ABitmap: TBitmap): HRGN;
var
  lTransparentColor: TRGBTriple;
  lX, lY, lStartX: Integer;
  lPixel: PRGBQuad;
  lExcluded: HRGN;
begin
  if assigned(ABitmap) then
  begin
    result := CreateRectRGN(0, 0, ABitmap.Width, ABitmap.Height);

    ABitmap.PixelFormat := pf32bit;

    lTransparentColor.rgbtRed  := GetRValue(ColorToRGB(ABitmap.TransparentColor));
    lTransparentColor.rgbtGreen := GetGValue(ColorToRGB(ABitmap.TransparentColor));
    lTransparentColor.rgbtBlue := GetBValue(ColorToRGB(ABitmap.TransparentColor));

    for lY := 0 to pred(ABitmap.Height) do
    begin
      lPixel := ABitmap.Scanline[lY];

      lStartX := -1;

      for lX := 0 to pred(ABitmap.Width) do
      begin
        if (lPixel^.rgbRed  = lTransparentColor.rgbtRed) and
           (lPixel^.rgbGreen = lTransparentColor.rgbtGreen) and
           (lPixel^.rgbBlue = lTransparentColor.rgbtBlue) then
        begin
          if lStartX = -1 then
            lStartX := lX;
        end
        else
        begin
          if lStartX > -1 then
          begin
            lExcluded := CreateRectRGN(lStartX, lY, lX, succ(lY));
            try
              CombineRGN(result, result, lExcluded, RGN_DIFF);
              lStartX := -1;
            finally
              DeleteObject(lExcluded);
            end;
          end;
        end;
        Inc(lPixel);
      end;

      if lStartX > -1 then
      begin
        lExcluded := CreateRectRGN(lStartX, lY, ABitmap.Width, succ(lY));
        try
          CombineRGN(result, result, lExcluded, RGN_DIFF);
        finally
          DeleteObject(lExcluded);
        end;
      end;
    end;
  end
  else
    result := 0;
end;
Liefert dir eine Region zu dem übergebenen Bild, wobei die Region alle Teile ausschliesst, welche die Transparenzfarbe des Bitmaps haben.

Ansonsten: MSDN-Library durchsuchenSetWindowRgn()

bitsetter 18. Feb 2008 18:05

Re: Bild in eine Buttonkomponente??
 
Zitat:

Zitat von rollstuhlfahrer
ne andere version ist die Image-Komponente, die auch angeklickt werden kann. Wenn man das Image auf Transpartent schaltet kanns auch wie ein Button aussehen. Nur der Klick wird auch dann gehaldelt, wenn er nicht auf dem Bild ist...

rollstuhlfahrer

Hallo,

wenn du ein Bitmap benutzt, dann kannst du beim Klicken die Farbe des Pixels unter dem Kursor vom Bild abfragen. Nur wenn die Farbe ungleich von TransparentColor des Bildes ist, dann wird das onMouseDown Ereignis ausgelöst sonst nicht. Alternativ könnte man auch die Maske des Bildes abfragen.

STS301 18. Feb 2008 18:16

Re: Bild in eine Buttonkomponente??
 
@Muetze1
Danke, was muss ich an dem Source ändern, damit ich das gewünschte Bild bekomme (ich will jetzt nicht zu viel verlangen, ich habe aber überhaupt keine Ahnung was der Source bedeutet :( )

@bitsetter
stimmt so könnte man es machen, aber es ist leider kein Button :pale:

Muetze1 18. Feb 2008 19:21

Re: Bild in eine Buttonkomponente??
 
Liste der Anhänge anzeigen (Anzahl: 1)
Kleines Beispiel im Anhang. Damit solltest du dann deinen Button anpassen können.

STS301 18. Feb 2008 19:27

Re: Bild in eine Buttonkomponente??
 
danke, und hoffentlich ein Bild einfügen können
setzte mich dann morgen damit auseinander :thanks:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz