Entwickler-Ecke

Multimedia / Grafik - Timage Transparenz in %, geht das?


magic delphi programmer - Mo 31.05.10 18:53
Titel: Timage Transparenz in %, geht das?
Hallo an alle Delphi Programmierer!

Wie und kann man überhaupt ein Timage so programmieren, dass man verschiedene Transparenzstufen hat die man mit einem Button aktivieren kann und dann z.B. 70% von Timage und 30% von der Form hat?
Und gibt es auch eine Möglichkeit die Transparenz von 0% bis 100% in einer Scroll Bar darzustellen?

Zur Zeit nutze ich folgenden Code, der aber eine Transparenz von 100% besitzt:

Delphi-Quelltext
1:
2:
Fotofeld.Transparent:=true;
Fotofeld.Picture.Bitmap.TransparentColor := clWhite;

Mein Timage heißt Fotofeld und ich füge dort JPG Bilder ein und ich programmiere mit Delphi 7.

Ich wäre für eine schnelle Antwort der Möglichkeiten dankbar.

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


elundril - Mo 31.05.10 18:56

Hallo und :welcome: im Delphi-Forum!

Du könntest den Bereich der hinter dem Image ist in ein Bitmap kopieren und dann mit diesem [http://www.delphi-library.de/topic_Alphablend+zweier+TGraphics_71382.html] Algorithmus das einfach miteinander verblenden. ;)

lg elundril


Bergmann89 - Di 01.06.10 02:29

Hey,

ich glaub das wäre zu Rechenaufwendig, denn wenn man die Form darunten noch benutzen will, dann wird das nix. Ich würd einfach ne 2. Form machen, die genau so groß ist wie die TImage. Da kommt dann auch die TImage rein und dann kann man die ganze Form mit AlphaBlend und AlphaBlendValue abblenden. Die Verschiebung kann man auch relativ einfach lösen, ruckelt zwar etwas, aber ich denk ma besser als jedesmal die Bilder zu verrechnen ist es allemal.
Im Anhang hab ich ma n kleines Testprogramm. Das einzige was nich geht is die Weiterleitung der Messages von Form2 auf Form1, das abfangen is schon drin. Aber ich hab sowas noch nich gemacht, vlt kann dir da jmd helfen, der etwas bewanderter is als ich^^

MfG Bergmann.


elundril - Di 01.06.10 13:44

Hmm, ich will ja nix sagen, aber das AlphaBlending von Formularen muss ja auch berechnet werden, nur macht das in dem Fall das Betriebssystem. Ob das dann so viel schneller ist wage ich zu bezweifeln. Leichter mag es vielleicht sein, aber schöner und schneller ist fraglich.

lg elundril


Bergmann89 - Di 01.06.10 17:29

Hey,

ich glaub aber, dass das BS das mit Hardwarebeschleunigung macht, also die Graka zur unterstützung nimmt. Denn wenn jede Form erst mit der CPU umgerechnet werden müsste, würde das alles in die Kniehe gehen. Ich hab leider noch nix dazu gefunden, wie MS das gelöst hat. Ich lass mich auch gern eines besseren belehren.
€: was mir grad noch einfällt, man kann zwar von der Form ein Bild machen, aber wenn die Image schon drüber liegt wird die ja auch mit kopiert, da müsste man ja jedesmal die Image ausblenden. Das würde ein unschönes Flimmern erzeugen. Oder gibt es da eine andere Methode?

MfG Bergmann.


elundril - Di 01.06.10 17:34

Es kommt halt drauf an wie oft das Bild verschoben wird. ;) Und wenns was animiertes sein soll ist es sowieso der falsche ansatz ein Image zu verwenden. ;)

lg elundril


Bergmann89 - Di 01.06.10 17:49

Hey,

wenn das Bild immer das selbe ist, und sich nur die Form darunter ändern soll, dann ist TImage doch eig richtig? Am bessten warten wir erstmal was bis magic delphi programmer uns sagt was er damit vor hat^^

MfG Bergmann


magic delphi programmer - Do 03.06.10 19:39

Ich wollte eine Bilderdiashow machen und hatte aber nur einfache Übergänge.
Jetzt wollte ich erstmal ein Bild transparent machen. Die Diashow mache ich über eine Listbox und wenn ich die Diashow starte läuft ein Timer und die Procedure läuft die Listbox herunter bis zum letzten Bild. Jetzt wollte ich auch die Canvas Anweisungen wie Rechtecke und Elipsen erstellen mit dem Transparenten verbinden. Für die Rechtecke und Elipsen verwende ich:

Delphi-Quelltext
1:
2:
3:
4:
Canvas.MoveTo(0, ClientHeight div 2);
Canvas.LineTo(Clientwidth, ClientHeight div 2);
Canvas.MoveTo(Clientwidth div 20);
Canvas.LineTo(Clientwidth div 2, ClientHeight);

Es wäre nett wenn ihr mir noch Vorschläge, Verbesserungen und Tipps geben würdet.

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Bergmann89 - Fr 04.06.10 18:11

Hey,

wie hast du das mit der Transparenz denn jetzt gelöst. Wenn du's verrechnet hast, dann musst du erst die Canvas zeichnen und dann einfach das Bild nochma neu verrechnen. Wenn du's auf meine Art und Weiße gemacht hast, dann kannst du einfach auf die Canvas der Image zeichnen, der Rest sollte dann automatisch passieren...

€: aber die TImage is eig nich zum Zeichnen gedacht. Leg dir einfach noch ne TPaintBox über die Image un da kannst du dann rein malen...

MfG Bergmann


magic delphi programmer - Sa 05.06.10 17:16

Danke Bergmann89,
die canvas Anweisungen habe ich in der Form gemacht und mit Button zum Aktivieren.
Wie kann man dein Programm mit meins Verschachteln bzw. genau die Objekte mit Eigenschaften verschieben, da man Delphi 7 nur 1mal öffnen kann?
Danke.


Bergmann89 - Sa 05.06.10 17:34

Hey,

entweder du öffnest dir meine Unit1 und Unit2 und schaltest dann immer zwischen dem Code hin und her. Oder du öffnsest die Unit im Editor un legst sie dir neben dein Delphi. Oder du machst Delphi über die Desktop-Verknüüfung auf, dann hast du 2x Delphi ;)
Ne Funktion gibt es da nicht, du muss alles abschreiben bzw. kopieren.

MfG Bergmann