Entwickler-Ecke

Multimedia / Grafik - Transparenzprobleme eine Bitmap


der organist - Sa 03.12.11 12:57
Titel: Transparenzprobleme eine Bitmap
Liebes Forum,

warum gibt mir der folgende Quelltext das darauf folgende Bild ohne Transparenz um die Spielfigur (obere linke Ecke) zurück?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.BrettzeichnenClick(Sender: TObject);
var LPath:String;
begin
  LPath:=ExtractFilePath(ParamStr(0));

  FBrett.LoadFromFile(LPath+'\Brett4.bmp');

  FRot.LoadFromFile(LPath+'\FigurRot.bmp');
  FRot.TransparentColor:=clWhite;                       //auch schon mit FRot.Canvas.Pixels[0,0] probiert
  FRot.Transparent:=True;

  Paintbox1.RePaint;
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
  Paintbox1.Canvas.StretchDraw(Rect(0,0,Paintbox1.Width,Paintbox1.Height),FBrett);
  Paintbox1.Canvas.StretchDraw(Rect(0,0,0+27,0+55),FRot);
end;



BrettFehler

Gruss, Lukas


Jann1k - Sa 03.12.11 13:22

Also ich habe gerade ein neues Projekt erstellt und deinen Code eingefügt (die beiden Aufrufe in PaintBox1Paint habe ich in die OnCLick Methode verschoben) und bei mir funktioniert das ohne Probleme. Allein durch die Verzerrung des Bildes (habe in paint schnell was zusammengezeichnet) kommt es dazu, dass ein paar Pixel nicht ganz clWhite sind und deshalb nicht transparent gezeichnet werden. Kann es sein, dass du an anderer Stelle noch was änderst?


jaenicke - Sa 03.12.11 13:23

Bei dir steht doch Delphi 2010, nimm doch einfach PNGs. ;-)


der organist - Sa 03.12.11 13:35

welchen Typ muss ich dann nehmen? Hab mal TPNG, TPNGImage, TPNGObject getestet, aber die sinds nicht, oder sie sind in einer extra Unit....


jaenicke - Sa 03.12.11 14:54

Nimm einfach ein TImage (visuell) oder TPicture / TPNGImage (nonvisuell zum Vorladen) und lade dort das PNG rein. In der uses muss dann natürlich noch die PNGImage Unit sein.


der organist - Sa 03.12.11 15:45

ich schätze mal, dass mich das heute Abend weiterbringen wird... danke