Hallo,
(Ten eerste: ik ben nog maar kort bezig met Windows programmeren, al wat langer met C++ programmeren, maar ik ben er dus nog niet echt goed in.)
Ik ben bezig met een programmaatje die een tabelletje, getekend met simpele lijnen met LineTo, over het scherm kan laten bewegen. Aan de zijkanten wil ik het dan graag een soort uit laten faden, daarmee bedoel ik iets vergelijkbaars als dat je met een tekenprogramma een selectie maakt van de rand en daar een gradient van wit (de achtergrondkleur van het programma) 100% zichtbaar naar wit 0% zichtbaar, aan de linkerrand is dat dus links 100% zichtbaar en rechts 0% zichtbaar.
Ik ben nog niet begonnen met het bewegende gedeelte, en bij het doorzichtigheidsgedeelte loop ik eigenlijk al vast.
Ik weet namelijk dat het niet slim is om GetPixel en SetPixel te gebruiken voor het tekenen op het scherm, maar ik weet geen andere mogelijkheid. Het probleem is met deze twee functies dat ik ze, bij een tabel van 100 pixels hoog en een fading van 20 pixels lang (voorbeeldgetallen) 100*20 keer moet aanroepen. En dan ook nog eens de nieuwe kleurwaarde ervoor moet berekenen, voor elke pixel 3 kleuren (ik heb hiervoor gewoone en simpele formule gebruikt die x% van de waarde van kleur A neemt en 100-x% van de kleurwaarde van kleur B ). Als de boel dan ook nog eens gaat bewegen, zal het toch iets van 10x per seconde moeten verversen voor een beetje een niet-trillerig beeld, en dat loopt dus heel erg op. Ik heb al wat geprobeerd en het werkt inderdaad niet optimaal snel.
Nu weet ik dat er al een poos ook GDI+ bestaat, maar ik lees nog steeds Petzold's Programming Windows, en daarin wordt dat niet behandeld. Ik wil GDI+ ook best een keer leren, maar liever als ik verder ben.
Dus nu was mijn vraag: is er een snellere manier (via de GPU en GDI, dus) om bijvoorbeeld voor een rechthoek de kleuren in een bepaald percentage doorzichtigheid te mengen?
Als dat niet kan, kan iemand me dan in de juiste richting sturen met GDI+?
Heel erg bedankt,
Vincent
(Ten eerste: ik ben nog maar kort bezig met Windows programmeren, al wat langer met C++ programmeren, maar ik ben er dus nog niet echt goed in.)
Ik ben bezig met een programmaatje die een tabelletje, getekend met simpele lijnen met LineTo, over het scherm kan laten bewegen. Aan de zijkanten wil ik het dan graag een soort uit laten faden, daarmee bedoel ik iets vergelijkbaars als dat je met een tekenprogramma een selectie maakt van de rand en daar een gradient van wit (de achtergrondkleur van het programma) 100% zichtbaar naar wit 0% zichtbaar, aan de linkerrand is dat dus links 100% zichtbaar en rechts 0% zichtbaar.
Ik ben nog niet begonnen met het bewegende gedeelte, en bij het doorzichtigheidsgedeelte loop ik eigenlijk al vast.
Ik weet namelijk dat het niet slim is om GetPixel en SetPixel te gebruiken voor het tekenen op het scherm, maar ik weet geen andere mogelijkheid. Het probleem is met deze twee functies dat ik ze, bij een tabel van 100 pixels hoog en een fading van 20 pixels lang (voorbeeldgetallen) 100*20 keer moet aanroepen. En dan ook nog eens de nieuwe kleurwaarde ervoor moet berekenen, voor elke pixel 3 kleuren (ik heb hiervoor gewoone en simpele formule gebruikt die x% van de waarde van kleur A neemt en 100-x% van de kleurwaarde van kleur B ). Als de boel dan ook nog eens gaat bewegen, zal het toch iets van 10x per seconde moeten verversen voor een beetje een niet-trillerig beeld, en dat loopt dus heel erg op. Ik heb al wat geprobeerd en het werkt inderdaad niet optimaal snel.
Nu weet ik dat er al een poos ook GDI+ bestaat, maar ik lees nog steeds Petzold's Programming Windows, en daarin wordt dat niet behandeld. Ik wil GDI+ ook best een keer leren, maar liever als ik verder ben.
Dus nu was mijn vraag: is er een snellere manier (via de GPU en GDI, dus) om bijvoorbeeld voor een rechthoek de kleuren in een bepaald percentage doorzichtigheid te mengen?
Als dat niet kan, kan iemand me dan in de juiste richting sturen met GDI+?
Heel erg bedankt,
Vincent