Autor Beitrag
ferra
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 24.01.11 21:31 
Guten Abend,

kann mir jemand erklären, ob es möglich ist, eine bestimmte Farbe eines Pictures transparent zu setzen?

Ich habe nämlich mehrere Grafiken welche ich normal lade:
ausblenden Delphi-Quelltext
1:
2:
  held_oben1 := TPicture.Create;
  held_oben1.LoadFromFile('source\grafiken\figuren\held\held_oben1.jpg');


und anschließend mit einigen anderen Bildern in ein Bitmap zeichne:
ausblenden Delphi-Quelltext
1:
buffer.Canvas.Draw(x_positionHeld, y_positionHeld, held_links2.Graphic);					


Nun möchte ich aber, dass eine bestimmte Farbe bei der Grafik 'held_oben1.jpg' transparent wird (in diesem Falle grün), sodas an dieser Stelle der Hintergrund zu sehen ist, welcher zuvor ebenfalls in das BitMap gezeichnet wurde.

Kann mir jemand einen Lösungsansatz geben?

MfG ferra
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mo 24.01.11 22:23 
JPEG ist etwas ungüstig, da Du da immer Klötzchen bekommen wirst, aber ansonsten...


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
Procedure DrawTransparent(DestCanvas:TCanvas;Graphic:TGraphic;Color:TColor);
var
  bmp:TBitmap;
begin
 bmp:=TBitmap.Create;
 try
 bmp.Width := Graphic.Width;
 bmp.Height := Graphic.Height;
 bmp.Canvas.Draw(0,0,Graphic);
 bmp.TransparentColor := Color;
 bmp.Transparent := true;
 DestCanvas.Draw(0,0,bmp);
 finally
 bmp.Free;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 image1.Picture.LoadFromFile('C:\bilder\h2o.jpg');
 DrawTransparent( Canvas, Image1.Picture.Graphic, clWhite);
end;

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Mo 24.01.11 23:07 
Besser ist es, wenn du mit einem Format arbeitest, das Alpha-Transparenz unterstützt (z.B. PNG). Alternativ eignen sich auch Vektorgraphiken, obwohl das bei Delphi eher unüblich ist.
ferra Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Di 25.01.11 19:07 
Guten Abend,

danke für die bisherigen Antworten.

Das ganze mit dem Versuch, eine Farbe transparent zu setzen, hat nicht ganz geklappt. Nun versuche ich es mit PNG zu realisieren.
Das ganze klappt auch, leider ist es mir zu rechenintensiv. Das ganze Programm ist seitdem starkt langsamer geworden.

Hat jemand einen Rat für mich, wie ich es etwas "hochdrehen" könnte?

MfG ferra