Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Image 50% Transparent? (https://www.delphipraxis.net/5065-image-50-transparent.html)

fcg 22. Mai 2003 16:27


Image 50% Transparent?
 
hi @ all

geht dat irgednwie. Ich habe zwei Images mit verschiedenen Inhalten übereinander liegen, und nun soll das obere (alles aus dem bild) nicht ganz transparent, sondern nut 50, 60 oder sonstwas prozent durchsichtig sein!

thÄnxX

fcg

Mario 22. Mai 2003 16:59

Ja das geht. Du nimmst ein drittes Image für die Anzeige.

Dann kannst Du die Pixel so in der Logik füllen:
Delphi-Quellcode:
Schleife in X-Richtung
 Schleife in Y-Richtung
  Bitmap3.Pixel := Bitmap1.Pixel + 0.5 * Bitmap2.Pixel
Das ganze ist natürlich nur eine Skizze vom Prinzip. Du musst es auf die RGB-Werte anwenden.

[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]

fcg 22. Mai 2003 20:48

hi das Prinzig habe ich verstanden. Leider mache ich das erste mal was mit Canvas. Kannst du vielliecht nen Code posten?

Mario 23. Mai 2003 07:08

Ich suche heute im Laufe des Tages mal einen DemoSource dazu raus. Aber eine Frage. Wie liegen Deine Source-Bilder vor und wo soll das überblendete erscheinen? Jeweils als TPicture?

Mario 23. Mai 2003 08:54

Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe Dir mal ein Beispiel gemacht. Allerdings bin ich mir nicht sicher, ob man die Werte subtrahieren oder addieren muss. Schaue es Dir einfach mal an...

fcg 23. Mai 2003 17:41

hi

danke. man muss Addieren) aber dann (und das nur nach elend langem warten) wird das erste bild richitg dargestellt, das zweite aber n igrnedwelchen total falschen farben darüber gemalt...

fcg

Mario 23. Mai 2003 18:18

Mit dem Addieren bin ich mir nicht so ganz sicher (mit dem Subtrahieren aber auch nicht).

Gedankenspiel: Sourcebild reines Rot. Drübermalbild: Weiß mit roten Fleck. Die Frage ist, wass würdest Du hier als Ergebnis erwarten?

Zur Geschwindigkeit: Ich habe keineswegs die Optimallösung gepostet. Es sollte nur mal zeigen, wie man auf Pixel zugreifen kann. Bedeutend schneller sollte es gehen, wenn man während dem Zeichnen die Bilder auf
Code:
Visible := False;
schaltet.

In der Tat aber ein interessantes Problem (grade die Überlagerung). Aber leider bin ich da kein Spezi...

fcg 23. Mai 2003 19:16

habe was gefunden, was mit hilft:

Delphi-Quellcode:
procedure TForm1.Blend(FromBit, ToBit, NewBit: TBitmap);
var
  pt, pf, pn: PByteArray;
  h, w: Integer;
begin
  for h:=0 to ToBit.Height-1 do
  begin
    pt:= ToBit.ScanLine[h];
    pf:= FromBit.ScanLine[h];
    pn:= NewBit.ScanLine[h];
    for w:=0 to (ToBit.Width *3)-1 do
      pn^[w]:= round(pf^[w] - ((pf^[w]-pt^[w]) / 100 * 
      TrackBar1.Position));
  end;
end;
fcg

[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]

Minz 26. Mai 2003 13:39

ähm, hab jetzt das ganze zuvor gepostete nicht gelesen, aber:

Bei einem Image kann man eine transparente Farbe festlegen.
Soll jetzt das Bild also 50% transparent sein malst du in das
Image jedes 2. Pixel in der transparenten Farbe. Dabei muss
natürlich die 2. Zeile zur 1. Zeile versetzt gemalt werden.

Mit der Anzahl der in transparent gemahlten Pixel kannst du
dann auch den Grad der Transparenz festlegen.

Grüßerle Minz

DanielF 20. Jun 2003 17:47

DanielJ
 
Hi,
du musst aus beiden RGB-Werten den Durchschnitt errechnen, z.B.:

Code:
RGB(ceil((GetRValue(oldColor) + GetRValue(aColor))/2),...,...);


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 Uhr.
Seite 1 von 2  1 2      

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