AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Anzeige einer halbtransparenten Grafik auf einem Formular
Thema durchsuchen
Ansicht
Themen-Optionen

Anzeige einer halbtransparenten Grafik auf einem Formular

Ein Thema von Zwixx · begonnen am 20. Jul 2007 · letzter Beitrag vom 23. Jul 2007
Antwort Antwort
Zwixx

Registriert seit: 2. Nov 2006
37 Beiträge
 
Delphi 10.3 Rio
 
#1

Anzeige einer halbtransparenten Grafik auf einem Formular

  Alt 20. Jul 2007, 16:06
Hi,

es wurde hier schon des öfteren über transparente Controls gesprochen, aber ich habe leider nichts gefunden was zu meinem Problem passt. Ich habe ein Formular, wo Panels, Edits, ... drauf sind. Nun möchte ich das ich dynamisch an diesen Editierfeldern ein Grafikelement zeichnen kann. Das funktioniert auch soweit ganz gut.

Allerdings habe ich das Problem das dadurch das ich dazu ein Panel benutze die Grafik als Rechteckiger Bereich angezeigt wird. Ich hätte es aber gerne das nur die Grafik angezeigt wird und alles darum transpanrent ist.

Gibt es eine Möglichkeit, das ein Panel eine andere Form als die rechteckige Form annimmt? Ich habe schon mit einem Transparenten Panel experimentiert, das funktioniert aber nicht korrekt, da mit der Zeit Grafikfehler entstehen.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Anzeige einer halbtransparenten Grafik auf einem Formula

  Alt 20. Jul 2007, 16:08
Hi,

hast du dir mal Delphi-Referenz durchsuchenTImage und davon insbesondere die Eigenschaft Delphi-Referenz durchsuchenTransparent angeschaut?
  Mit Zitat antworten Zitat
Zwixx

Registriert seit: 2. Nov 2006
37 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Anzeige einer halbtransparenten Grafik auf einem Formula

  Alt 20. Jul 2007, 16:10
Ja, leider bringt das aber nichts, da ein TImage kein TWinControl ist und deswegen nicht über andere Komponenten gezeichnet werden kann. Ein TImage besitzt kein WindowsHandle, deswegen kann es immer nur auf dem Element gezeichnet werden, das den Parent des TImage hat. Ich muss aber Teilweise über mehrere Panels hinweg zeichnen, da diese Nebeneinander sind.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Anzeige einer halbtransparenten Grafik auf einem Formula

  Alt 20. Jul 2007, 16:14
Achso, das ging aus deinem Post aber leider nicht hervor.

Edit: ich habe das hier bei den Schweizern gefunden, vielleicht hilft dir das ja ein bisschen weiter. Du könntest z.B. per Scanline das Bild durchgehen und dann mit CreateRectRgn und CombineRgn (hieß das nicht so?) eine geeignete Form zusammenbasteln und dem Panel zuweisen.
  Mit Zitat antworten Zitat
Zwixx

Registriert seit: 2. Nov 2006
37 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Anzeige einer halbtransparenten Grafik auf einem Formula

  Alt 23. Jul 2007, 09:07
Danke

hat mich noch ein wenig fummelei gekostet, aber jetzt funktioniert es.

für diejenigen, die das gleiche Problem haben... hier wie ichs gelöst habe:

Delphi-Quellcode:
procedure TForm.Button8Click(Sender: TObject);
var
  x, y : Integer;
  rgn, rgn2 : THandle;
  function icotobmp(Icon: TIcon): tbitmap;
  begin
    result := TBitmap.create;
    result.Width := Icon.Width;
    result.Height := Icon.Height;
    result.Canvas.Draw(0, 0, Icon);
  end;
begin
  rgn := CreateRectRgn(0, 0, pnl.Width, pnl.Height);

  with icotobmp(img.Picture.Icon) do
  begin
    for x := 0 to img.Width do
      for y := 0 to img.Height do
      begin
        if Canvas.Pixels[x, y] = Canvas.Pixels[0, 0] then
        begin
          rgn2 := CreateRectRgn(x, y, x+1, y+1);
          CombineRgn(rgn, rgn, rgn2, RGN_XOR);
          DeleteObject(rgn2);
        end;
      end;
    Free;
  end;
  setwindowrgn(pnl.Handle, rgn, True);
  deleteObject(rgn);
end;
Nachtrag: wie ich inzwischen herausgefunden habe, ist Icon.Width/Height nur ein 'Näherungswert'... deshalb aufpassen was man an Höhe und Breite des Icons hat... wenn man direkt ein Bitmap hat ist das eh egal
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 Uhr.
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