Autor Beitrag
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 18.08.07 19:05 
Hi,

lange her seit meinem letzten Posting hier bei AUQ ( ;) )... nun denn, ich brauche Hilfe!

Ich hab mir eine Bildschirmschoner geschrieben, der mittels pixelweiser Manipulation einen Grafikeffekt erzeugt (ähnlich "Schleifen" von Vista). Dazu habe ich ein Bitmap, welches ich über Speicherzugriffe (TBitmap.ScanLine[]) manipuliere und danach auf den DC des Forms kopiere. Leider ist das sehr langsam.

Da ich das Alte Bild nur überzeichen brauche ich aber eigentlich keine 2 Puffer (Bitmap und DC), und es ist so auch seeeehr langsam, das Buffer-Kopieren nimmt einen Großteil der Rechenzeit ein. Allerdings habe ich auf den DC keinen Speicherzugriff... kann man irgendwie per API auf den Speicherbereich eines DC zugreifen, also auf einen Pointer der die Pixel angibt?

Ansonsten... falls jemand von euch ne bessere Idee hat, das Proggi zu beschleunigen...

_________________
Life is a bad adventure, but the graphic is really good!
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 18.08.07 20:33 
Erzeuge dein Tmp-Bitmap mit CreateCompatibleDC, damit sollte das Konvertieren zwischen verschiedenen Pixelformaten beim Übertragen vom Temp--BMP in den DC vermieden werden.

Ferner: Wie kopierst Du? DrawBitmap, BitBlt oder andere Methode?

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.