AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi PaintBox bzw. Spectrum transparent machen?

PaintBox bzw. Spectrum transparent machen?

Ein Thema von AlexII · begonnen am 28. Sep 2009 · letzter Beitrag vom 28. Sep 2009
Antwort Antwort
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

PaintBox bzw. Spectrum transparent machen?

  Alt 28. Sep 2009, 13:01
Ich habe auf einer PaintBox ein Spectrum von bass.dll laufen. Hintergrundfarbe ist bei mir auf Spectrum.BackColor := clBtnFace; gesetzt. Wenn ich allerdings andere Skins für das Prog verwende passt die Hintergrundfarbe der PaintBox nicht zum Skin.

Wer sagt mir wie ich Spectrum transparent mache? Danke!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#2

Re: PaintBox bzw. Spectrum transparent machen?

  Alt 28. Sep 2009, 13:07
Du könntest statt .BackColor ein .BackImage angeben, welches dem Bildausschnitt hinter dem Specktrum entspricht.

Man könnte auch garkeinen Hintergrund zeichnen und dafür vor einem Neuzeichnen den original Hintergrund sich neu zeichnen lassen (Parent.Repaint oder so), aber das wird wohl dann mehr blinken.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#3

Re: PaintBox bzw. Spectrum transparent machen?

  Alt 28. Sep 2009, 13:14
Ich hab die property .BackImage nicht, habe D7 PE und wenn Parent.Repaint mehr blinkt ist das schlecht.

Gibt's noch irgendwelche Möglichkeiten?
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
847 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: PaintBox bzw. Spectrum transparent machen?

  Alt 28. Sep 2009, 13:29
Wenn du das Spectrum von der Visualisierung der bass.dll genommen hast, dann gibt es da auch eine Background-Image-Property. Da musst du den passenden Teil deines Hintergrund-Skins hineinkopieren, und evtl. noch die Eigenschaft UseBackGroundImage oder so aktivieren.
Schau mal in den Code der Spectrum-Unit, da sollte das klar werden.
The angels have the phone box.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#5

Re: PaintBox bzw. Spectrum transparent machen?

  Alt 28. Sep 2009, 13:36
das mit dem BackImage war nur ein Beispiel ... kenn die Komponente ja nicht,

aber ges geht halt darum, daß du erst den Hintergrund (keine Farbe, sondern ebem ein Bild dem Style entsprechend) neu zeichnen mußt und dann darauf dann das Spectrum.

Da die PaintBox ja nun keinen Puffer hat und demnach immer alles sofort gezeichnet wird, gibt es also immer eine kurze Phase, wo nur der Hintergrund da ist und dann das Spectrum neu gezeichnet wird ... ergo, es blinkt.

Lösung wären:

- Erstmal alles in ein temporäres Bitmap reinzeichnen und das Bitmap dann nur noch komplett auf die PaintBox kopieren

- Oder nur die Änderungen zeichnen ... also z.B. zu kurze Balken (im Verhältnis zum vorherigen Bild) des Specktrums verlängern und da den jeweiligen Balken neu zeichnen.
Und zu lange Balken verkürzen, also nur an diesen Stellen den Hintergrund reinkopieren.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 23:48 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