Hi @ all,
wie sollte es auch anders sein ich habe mal wieder ein Problem
Also ich schreib gerade an eine kleinen Grafikkomponten, die so allerlei spielkram wie alpha-transparentz usw kann. Die ganze grafik-veränderung mache ich per Scanline und von hier kommt auch das problem.
Wenn ich ein Bild lade (TBitmap) und es mit meiner Komponente bearbeite geht das ganze sprichwörtlich in milli-sekunden also so flink wie ich das gerne hätte. Ich bin jetzt aber dazu gekommen, dass ich eine zweite instanz meines grafikobjects in einer unterkompontet brauche.
Also Hauptprogram hat eine Grafikkomponente
Ein Unterobjekt hat eine weitere Instanz der Grafikkomponente
So die unterkomponente erzeugt und bearbeitet ein Bild und gibt das als an das Hauptprogram
Routine im Unterobj:
Code:
//Irgendwo davor...
img := TBitmap.Create;
img.PixelFormat := pf24Bit;
usw....
procedure TBox.getPic(var img : TBitmap);
var
I : Integer;
begin
For I := 0 to myItemCount - 1 do drawItem(i);
MyDraw.Render(myImg.Canvas);
img.Assign(myImg);
end;
(Render erzeugt das Bild)
Nun das eigentliche Problem:
Wenn ich das neue Bild ein weiteres mal mit Scanline barbetien will dauert das an die 3-4min (JA MINUTEN) also einiges zu lange für ein bild mit 300 x 300 px.
Kennt wer das Phänomen?
thx für's nachdenken
Corelgott