| |
|
|
Jac de Lad | Kenn jemand ne API, mit der ich auf einem hPic eine Farbe ratzfatz gegen eine andere austauschen kann?
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 17.07.2008 ▲ |
|
|
|
|
| Ist mir nicht bekannt, aber per bitblt-Operationen (and or xor) lassen sich blitzschnell ganze Farbbereiche modifizieren.
Workaround potuto ein kleines inlineasm sein welches im membmp pixelt.
Oooder Du verwendest geschickt den -1 Modus von z.B. drawPic oder copyBmp da man hier ja die "Transparentfarbe" wählen kann und z.B. auf einen andere Grundfarbe raufkopieren kann.
[offtopic] create("hNewPic",xx,yy,farbe) [/offtopic] |
|
|
| |
|
|
|
| Egal, hier mal ein Testcode [...] wobei sich mir die Frage an Frank aufdrängt weshalb hier der inline-ASM-Aufruf so ewig dauert bzw. warum hier der inlineasm "langsamer" ist als der XProfan-Code. (irgendwas übersehen?) |
|
|
| |
|
|
|
| So gehts: [...] (jetzt hats mich auch interessiert...) |
|
|
| |
|
|
|
Jörg Sellmeyer | Kannst Du es nicht im Transparentmodus auf einen entsprechend gefäbten Hintergrund kopieren: DrawPic hBitmap&, X%, Y%; modus%[, transcol&] Das gilt naturalmente erst ab Profan11! Aber auch mit älteren Versionen kann man es mit einem kleinen Umweg erreichen: -Pixel links unten in der zu ersetzenden Farbe einfärben -Bild auf gewünschten Farbuntergrund kopieren -Pixel wieder in der Ursprungsfarbe einfärben -zurückkopieren
David hats ja oben schon erwähnt, aber so ne Step-byStep-Anleitung kann ja auch nicht schaden. edit: (ok, er war sogar mit Code schneller) |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 17.07.2008 ▲ |
|
|
|
|
Frank Abbing | iF
Egal, hier mal ein Testcode [...] wobei sich mir die Frage an Frank aufdrängt weshalb hier der inline-ASM-Aufruf so ewig dauert bzw. warum hier der inlineasm "langsamer" ist als der XProfan-Code. (irgendwas übersehen?)
Du rufst die Assemblerroutine per jede Zeile neu auf. Diese vielen Dll-Aufrufe dauern eben. Wenn du das Bild in einem Rusch kopierst ist es naturalmente schneller als XProfan. Abgesehen davon, dass die API GetPixel sehr lahm ist. Am besten, du verwendest eine DIB. |
|
|
| |
|
|
|
| Hiernach ist der Aufruf einer Inline-ASM-Funktion mehr als 100 Mal langsamer als der Aufruf einer XProfanfunktion.
Ich muss mir mal die ENH ansehen, vielleicht lässt sich das verbessern? |
|
|
| |
|
|
|
Frank Abbing | iF
Hiernach ist der Aufruf einer Inline-ASM-Funktion mehr als 100 Mal langsamer als der Aufruf einer XProfanfunktion. Ich muss mir mal die ENH ansehen, vielleicht lässt sich das verbessern?
Der Assemblercode ist sicher optimierbar. |
|
|
| |
|
|
|
Jac de Lad | Erstmal danke.
Ich habe ien Bild auf ein Static gelegt und wollte noch die transparenten Bereiche an die Hintergrundfarbe anpassen, dafür brauche ich das. Deshalb schied das DrawPic auch aus. Das Ganze mit dem Static ist nötic wegen dem automatischen Neuzeichnen (das Static liegt NICHT auf dem hWnd und mit Subclassing und manuellem Neuzeichnen hatte ich nicht so den gewünschten Erfolg, vor allem bei der Perförmanze). |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 17.07.2008 ▲ |
|
|
|
|
| sendMessage(hBmp,stm_setImage,,hPic) |
|
|
| |
|
|
|
Jac de Lad | Das ist auch klar, aber das hilft mir bei dem Transparenzkernproblem nicht weiter. Aber deine Methode mit dem hNewPic hat mir geholfen. Eingefügt von iF : Hier gehts weiter: [...] |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 17.07.2008 ▲ |
|
|
|