Hallo
ich bekomme das nicht hin.
Mein Experiment sieht so aus, ich habe zwei Buttons Kopie und Transparent:
Delphi-Quellcode:
procedure TForm1.SpeedButton4Click(Sender: TObject);
var //Button Transparent
Bmp1,bmp3: TBitmap;
bmpList: TImageList;
begin
Bmp1 := TBitmap.Create;
bmp3 := TBitmap.create;
try
bmp1.width:=blatt.width;
bmp1.height:=blatt.height;
bmp3.width:=blatt.width;
bmp3.height:=blatt.height;
Bmp1.Assign(blatt); //Blatt ist das Bitmap aus Zeichen Canvas
bmpList := TImageList.CreateSize(bmp1.Width,bmp1.Height);
bmplist.AddMasked(bmp1,bmp1.transparentcolor);
try
bmpList.Getbitmap(0, bmp3);
blatt.canvas.brush.color:=clnone;
blatt.canvas.brush.style:=bsclear;
paintbox1.canvas.brush.style:=bsclear;
{Paintbox1 nimmt das Bild auf welches unter onPaint mit
Paintbox1.canvas.draw(0,0,blatt); immer wider nachgezeichnet wird.
Blatt wurde zuvor durch copyrect mit einem Bitmap, weches einen bestimmten Bereich der Zeichen Canvas enthält geladen.}
blatt.assign(bmp3);
finally
bmpList.Free;
end;
finally
bmp1:=nil;
bmp3:=nil;
end;
end;
Im Zweiten Versuch habe ich unter 'BitBlt' mal alles versucht und bin zu diesm Ergebnis gekommen.
Delphi-Quellcode:
bmp1,bmp2:tbitmap;
x,y: integer;
r:TRect;
begin
bmp1:=tbitmap.create;
bmp2:=tbitmap.create;
bmp1.canvas.brush.style:=bssolid;
bmp1.assign(blatt);
x:=bmp1.Width;
y:=bmp1.Height;
bmp2.Width:=x;
bmp2.Height:=y;
bmp2.canvas.brush.style:=bsclear;
r:=Rect(0,0,x,y);
bmp2.Canvas.BrushCopy(r, bmp1, r,clwhite);
BitBlt(bmp2.Canvas.Handle,0, 0, x, y,bmp1.Canvas.Handle, 0,0,PATCOPY);
blatt.assign(bmp2);
end;
Hier hat man den Hintergrund vom Desktop mit kopierter Zeichnung, immer wieder lustig. Was ist alles falsch
Oder hab' ich was gefunden was es gar nicht gibt unter Delphi2.0
gruß Schwani