LEES EERST MIJN REACTIE HIERONDER... sorry
Voor een soort eigen Windows XP Media Center heb ik een routine gemaakt die op een achtergrond mooie witte teksten print met een zwart randje eromheen, dit ziet er als volgt uit:

Ik maak dit door:
1) een stukje achtergrond uit een buffer met BitBlt te kopieren naar een andere (kleine) buffer
2) hierop 24 keer in zwart de gewenste tekst te printen, steeds een stukje verderop (in een rondje), zodat ik de tekst iets uitgesmeerd krijg
3) hieroverheen dezelfde tekst nog een keer in wit te printen
4) deze buffer vervolgens op m'n scherm te BitBlt-en
1 en 4 gaan supersnel (BitBlt is liev!) maar vooral 2 duurt relatief lang.
Mijn vraag: hoe kan ik dit alles sneller krijgen? Het maakt me niet uit als ik 1 en 4 ook moet wijzigen, of zelfs heel m'n opzet moet veranderen...
Ik zie een aantal mogelijkheden:
1) ineens witte tekst met een zwart randje printen. Is hier een API voor? Ik heb bij de API's TextOut, DrawText en DrawTextEx gekeken, maar zag niet wat ik zocht...
2) Iets met DirectDraw?
3) de letters eenmalig cachen en dan letter-voor-letter op m'n achtergrond BitBlt-en.
4) 1 keer de zwarte tekst printen en deze 24 keer in een rondje BitBlt-en, ipv 24 keer printen.
Gedachten hierover:
1 lijkt me de mooiste oplossing. Iemand?
2 komt misschien in de buurt van 1, ik heb echter nog nooit wat met DirectDraw gedaan. Is het hiermee wel snel (en makkelijk?) te doen?
3 lijkt me niet veel sneller te gaan: 100 letters (los!) bitblt-en zal ook niet veel sneller gaan dan 24 keer iets printen... bovendien moet ik dan al die letters gaan cachen en ook nog eens zien te bepalen hoe breed elke letter is...
4 bedacht ik me pas net, ik weet niet of dit makkelijk haalbaar is... ik ga er even over nadenken.
Een ander nadeel is dat ik bij oplossing 3 en 4 geen gebruik meer kan maken van de font-smoothing van Windows: je zou dan rare effecten krijgen. Dit is echter geen ramp: op m'n tv zie je het verschil toch nauwelijks...
Alle ideeen zijn welkom!
Voor een soort eigen Windows XP Media Center heb ik een routine gemaakt die op een achtergrond mooie witte teksten print met een zwart randje eromheen, dit ziet er als volgt uit:

Ik maak dit door:
1) een stukje achtergrond uit een buffer met BitBlt te kopieren naar een andere (kleine) buffer
2) hierop 24 keer in zwart de gewenste tekst te printen, steeds een stukje verderop (in een rondje), zodat ik de tekst iets uitgesmeerd krijg
3) hieroverheen dezelfde tekst nog een keer in wit te printen
4) deze buffer vervolgens op m'n scherm te BitBlt-en
1 en 4 gaan supersnel (BitBlt is liev!) maar vooral 2 duurt relatief lang.
Mijn vraag: hoe kan ik dit alles sneller krijgen? Het maakt me niet uit als ik 1 en 4 ook moet wijzigen, of zelfs heel m'n opzet moet veranderen...
Ik zie een aantal mogelijkheden:
1) ineens witte tekst met een zwart randje printen. Is hier een API voor? Ik heb bij de API's TextOut, DrawText en DrawTextEx gekeken, maar zag niet wat ik zocht...
2) Iets met DirectDraw?
3) de letters eenmalig cachen en dan letter-voor-letter op m'n achtergrond BitBlt-en.
4) 1 keer de zwarte tekst printen en deze 24 keer in een rondje BitBlt-en, ipv 24 keer printen.
Gedachten hierover:
1 lijkt me de mooiste oplossing. Iemand?
2 komt misschien in de buurt van 1, ik heb echter nog nooit wat met DirectDraw gedaan. Is het hiermee wel snel (en makkelijk?) te doen?
3 lijkt me niet veel sneller te gaan: 100 letters (los!) bitblt-en zal ook niet veel sneller gaan dan 24 keer iets printen... bovendien moet ik dan al die letters gaan cachen en ook nog eens zien te bepalen hoe breed elke letter is...
4 bedacht ik me pas net, ik weet niet of dit makkelijk haalbaar is... ik ga er even over nadenken.
Een ander nadeel is dat ik bij oplossing 3 en 4 geen gebruik meer kan maken van de font-smoothing van Windows: je zou dan rare effecten krijgen. Dit is echter geen ramp: op m'n tv zie je het verschil toch nauwelijks...
Alle ideeen zijn welkom!
[ Voor 4% gewijzigd door Kuhlie op 28-10-2004 16:41 . Reden: het is center, niet centre... ]