AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Image 50% Transparent?
Thema durchsuchen
Ansicht
Themen-Optionen

Image 50% Transparent?

Ein Thema von fcg · begonnen am 22. Mai 2003 · letzter Beitrag vom 21. Jun 2003
Antwort Antwort
Seite 1 von 2  1 2      
fcg

Registriert seit: 15. Apr 2003
98 Beiträge
 
#1

Image 50% Transparent?

  Alt 22. Mai 2003, 17:27
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
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#2
  Alt 22. Mai 2003, 17: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]
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
fcg

Registriert seit: 15. Apr 2003
98 Beiträge
 
#3
  Alt 22. Mai 2003, 21:48
hi das Prinzig habe ich verstanden. Leider mache ich das erste mal was mit Canvas. Kannst du vielliecht nen Code posten?
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#4
  Alt 23. Mai 2003, 08: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?
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#5
  Alt 23. Mai 2003, 09:54
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...
Angehängte Dateien
Dateityp: zip transparenttest.zip (67,4 KB, 92x aufgerufen)
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
fcg

Registriert seit: 15. Apr 2003
98 Beiträge
 
#6
  Alt 23. Mai 2003, 18: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
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#7
  Alt 23. Mai 2003, 19: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...
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
fcg

Registriert seit: 15. Apr 2003
98 Beiträge
 
#8
  Alt 23. Mai 2003, 20: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]
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#9
  Alt 26. Mai 2003, 14: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
  Mit Zitat antworten Zitat
DanielF

Registriert seit: 18. Jan 2003
110 Beiträge
 
Delphi 7 Professional
 
#10

DanielJ

  Alt 20. Jun 2003, 18:47
Hi,
du musst aus beiden RGB-Werten den Durchschnitt errechnen, z.B.:

Code:
RGB(ceil((GetRValue(oldColor) + GetRValue(aColor))/2),...,...);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:41 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