AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Zwei transparte bilder verbinden.
Thema durchsuchen
Ansicht
Themen-Optionen

Zwei transparte bilder verbinden.

Ein Thema von Karstadt · begonnen am 3. Aug 2006 · letzter Beitrag vom 5. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#1

Zwei transparte bilder verbinden.

  Alt 3. Aug 2006, 14:41
Hallo. wie kann ich zwei Bilder auf einander liegen (die bilder können die transparenten farben haben).

MFG
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Zwei transparte bilder verbinden.

  Alt 3. Aug 2006, 14:59
was für bilder genau?

Du könntest es mit Graphics32 (www.graphics32.org) machen, entweder mit layers, oder indem du einfach das eine auf das andere zeichnest (evtl. musst du da ein paar optionen einschalten).

Ansonsten kannst du das natürlich selber machen:

Delphi-Quellcode:
function Combine(Bottom, Top: TBitmap; alpha: array of Byte): TBitmap;
var btmptr,topptr,resptr: Pointer;
begin
  if length(alpha) < Top.Width * Top.Height then
    raise Exception.Create('nicht genug alpha!');

  Result := TBitmap.Create;
  Result.Width := Bottom.Width;
  Result.Height := Bottom.Height;

  btmptr := Bottom.Scanline[0];
  topptr := Top.Scanline[0];
  resptr := Result.Scanline[0];
  for i := 0 to high(alpha) do
    begin
      resptr^ := CombineColors(btmptr^,topptr^,alpha[i]);

      Inc(btmptr);
      Inc(topptr);
      Inc(resptr);
    end;
end;

function CombineColors(c1,c2: TColor; fac: Byte): TColor;
begin
  Result.Red := Round(c1.Red * (255-fac) / 255 + c2.Red * fac / 255);
  //das selbe für grün und blau, und evtl. muss man das erst mal in einen anderen record pressen, damit die felder verfügbar sind
end;
Keine Garantie auf Fehlerfreiheit, höchstwahrscheinlich muss man da noch einiges umcasten.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: Zwei transparte bilder verbinden.

  Alt 3. Aug 2006, 15:21
Mit Transparenzfarbe: MSDN-Library durchsuchenTransparentBlt
Mit Alphakanal: MSDN-Library durchsuchenAlphaBlend

oder eben GR32 .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Zwei transparte bilder verbinden.

  Alt 3. Aug 2006, 19:11
Nimm doch gleich DirectX oder Opengl.
Warum einfach wenn es auch schwer geht.
Besucht doch mal meine Homepage
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Zwei transparte bilder verbinden.

  Alt 3. Aug 2006, 20:13
Gandalfus: Meinst du etwa, Photoshop benutzt OpenGL oder DirectX, um zwei Layer anzuzeigen?

Die Eingine zu initialisieren, Quads/Sprites erstellen und dann die Bilder als Texturen drauf... neee... das wär mir dann doch ein wenig zu overpowered.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Zwei transparte bilder verbinden.

  Alt 3. Aug 2006, 20:54
Ich meine das man dazu nicht Graphics32(oder kryptische Api Befehle) braucht sondern GDI bzw TCanvas völlig ausreicht.
Besucht doch mal meine Homepage
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#7

Re: Zwei transparte bilder verbinden.

  Alt 3. Aug 2006, 21:27
Zitat von Gandalfus:
GDI
*hust* Rate mal, woher die beiden nun wirklich simplen API-Funktionen stammen. Für erstere Funktion gäbe es als Wrapper noch TCanvas.Draw (besser gesagt TBitmap.Draw), aber ein paar Argumente mehr sind hoffentlich noch kein Weltuntergang.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#8

Re: Zwei transparte bilder verbinden.

  Alt 4. Aug 2006, 23:35
[Fehler] Unit1.pas(43): Inkompatible Typen: 'TColor' und 'procedure, untyped pointer or untyped parameter'

  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#9

Re: Zwei transparte bilder verbinden.

  Alt 4. Aug 2006, 23:48
Die Fehlermeldung sagt doch schon alles: Du dekrementierst die Zeilennummer um 1 und bekommst die Antwort auf die Frage nach dem Leben, dem Universum und dem ganzen Rest.

Du könntest auch ein paar Glaskugeln für die DP-Member spenden. Oder beten, das soll manchmal auch helfen. Aber komm bloß nicht auf die Idee, uns den Code von Zeile 43 zu zeigen, da könnten wir ja gleich mit Raten anfangen.

PS: Nimm lieber die genannten GDI-Funktionen. Deren Richtigkeit haben schon Tausende von Programmmieren bestätigt .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#10

Re: Zwei transparte bilder verbinden.

  Alt 5. Aug 2006, 11:49
habe das so gelöst.

Delphi-Quellcode:
var
  overlay: TBitmap;
  ziel: TBitmap;
begin
  overlay := TBitmap.create;
  overlay.loadfromfile('xxxxxxxxxxx');
  overlay.transparentcolor := clblue;
  overlay.transparent := true;
  ziel := TBitmap.create;
  ziel.loadfromfile('xxxxxxxxxxx');

  ziel.canvas.draw(x,y,overlay); //übereinander zeichen
   
  Form1.canvas.draw(0,0,ziel); //Das ganze noch irgendwo anzeigen
Die lösung kommt aus einen anderen Forum. Das ist einfacher (finde ich). Für euere Lösung bin ich auch sehr dankbar!
  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 04:56 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