Voila, je veux afficher un polygone (plein) de 570 sommets dans un
rectangle de 1000*800 (à la louche) en utilisant un effet de transparence.
GDI+ :
C'est par là que j'ai commencé car très facile à mettre en oeuvre, il
suffit d'utiliser FillPolygone, avec un SolidBrush
GDI :
- Je crée un compatibleDC que j'appelle AlphaDC
- Je copie mon rectangle dans AlphaDC
- J'utilise la fonction Polygon (avec un solid brush et le même momde de
remplissage que GDI+) toujours dans AlphaDC
- Puis j'utilise AlphaBlend pour tout balancer à l'écran.
Donc pas mal de copies en fait.
Et là, grosse surprise.
Ma routine GDI éclate complètement la fonction GDI+, d'un facteur 6 ou 7.
J'aurais pourtant cru que GDI+, étant plus récent, était au moins aussi
performant que GDI ?!?
Ma routine GDI éclate complètement la fonction GDI+, d'un facteur 6 ou 7.
J'aurais pourtant cru que GDI+, étant plus récent, était au moins aussi performant que GDI ?!?
Vous avez un début d'explication?
Oui, c'est connu et normal (et pas le but de GDI+) GDI+ n'ayant pas de DDI utilise celle de GDI et ne profite pas tjrs de l'accélération hard de GDI
JM
Christian ASTOR a écrit :
JM wrote:
Oui, c'est connu et normal (et pas le but de GDI+) GDI+ n'ayant pas de DDI utilise celle de GDI et ne profite pas tjrs de l'accélération hard de GDI
Ah? J'avais cherché à utiliser GDI+ suite à un livre que j'avais feuilleté et qui affirmait que GDI+ était une évolution moderne du GDI, en plus mieux.
Bon, c'est pas grave, j'ai amélioré mes connaissances sur les HDC en créant un dérivé de CDC qui gère la transparence sans se fouler
Christian ASTOR a écrit :
JM wrote:
Oui, c'est connu et normal (et pas le but de GDI+)
GDI+ n'ayant pas de DDI utilise celle de GDI et ne profite pas tjrs de
l'accélération hard de GDI
Ah?
J'avais cherché à utiliser GDI+ suite à un livre que j'avais feuilleté
et qui affirmait que GDI+ était une évolution moderne du GDI, en plus mieux.
Bon, c'est pas grave, j'ai amélioré mes connaissances sur les HDC en
créant un dérivé de CDC qui gère la transparence sans se fouler
Oui, c'est connu et normal (et pas le but de GDI+) GDI+ n'ayant pas de DDI utilise celle de GDI et ne profite pas tjrs de l'accélération hard de GDI
Ah? J'avais cherché à utiliser GDI+ suite à un livre que j'avais feuilleté et qui affirmait que GDI+ était une évolution moderne du GDI, en plus mieux.
Bon, c'est pas grave, j'ai amélioré mes connaissances sur les HDC en créant un dérivé de CDC qui gère la transparence sans se fouler
adebaene
JM wrote:
Bonjour
Voila, je veux afficher un polygone (plein) de 570 sommets dans un rectangle de 1000*800 (à la louche) en utilisant un effet de transparen ce.
GDI+ : C'est par là que j'ai commencé car très facile à mettre en oeuvre , il suffit d'utiliser FillPolygone, avec un SolidBrush
GDI : - Je crée un compatibleDC que j'appelle AlphaDC - Je copie mon rectangle dans AlphaDC - J'utilise la fonction Polygon (avec un solid brush et le même momde de remplissage que GDI+) toujours dans AlphaDC - Puis j'utilise AlphaBlend pour tout balancer à l'écran.
Donc pas mal de copies en fait.
Et là, grosse surprise.
Ma routine GDI éclate complètement la fonction GDI+, d'un facteur 6 o u 7.
J'aurais pourtant cru que GDI+, étant plus récent, était au moins a ussi performant que GDI ?!?
Plus récent oui, offrant plus de primitives de dessin oui, par contre plus rapide, généralement non.
Ceci-dit, ton test de comparaison est "injuste" parce que dans un cas (GDI), tu utilises un back-buffer et dans l'autre (GDI+) tu n'en utilises pas. Qu'est ce que ca donne si tu utilises un back-buffer avec GDI+ (gardes le même code, mais dessines juste dans un memoryDC et fait un BitBlt à l'éran une fois que le dessin est fait) ??
Arnaud MVP - VC
JM wrote:
Bonjour
Voila, je veux afficher un polygone (plein) de 570 sommets dans un
rectangle de 1000*800 (à la louche) en utilisant un effet de transparen ce.
GDI+ :
C'est par là que j'ai commencé car très facile à mettre en oeuvre , il
suffit d'utiliser FillPolygone, avec un SolidBrush
GDI :
- Je crée un compatibleDC que j'appelle AlphaDC
- Je copie mon rectangle dans AlphaDC
- J'utilise la fonction Polygon (avec un solid brush et le même momde de
remplissage que GDI+) toujours dans AlphaDC
- Puis j'utilise AlphaBlend pour tout balancer à l'écran.
Donc pas mal de copies en fait.
Et là, grosse surprise.
Ma routine GDI éclate complètement la fonction GDI+, d'un facteur 6 o u 7.
J'aurais pourtant cru que GDI+, étant plus récent, était au moins a ussi
performant que GDI ?!?
Plus récent oui, offrant plus de primitives de dessin oui, par contre
plus rapide, généralement non.
Ceci-dit, ton test de comparaison est "injuste" parce que dans un cas
(GDI), tu utilises un back-buffer et dans l'autre (GDI+) tu n'en
utilises pas. Qu'est ce que ca donne si tu utilises un back-buffer avec
GDI+ (gardes le même code, mais dessines juste dans un memoryDC et
fait un BitBlt à l'éran une fois que le dessin est fait) ??
Voila, je veux afficher un polygone (plein) de 570 sommets dans un rectangle de 1000*800 (à la louche) en utilisant un effet de transparen ce.
GDI+ : C'est par là que j'ai commencé car très facile à mettre en oeuvre , il suffit d'utiliser FillPolygone, avec un SolidBrush
GDI : - Je crée un compatibleDC que j'appelle AlphaDC - Je copie mon rectangle dans AlphaDC - J'utilise la fonction Polygon (avec un solid brush et le même momde de remplissage que GDI+) toujours dans AlphaDC - Puis j'utilise AlphaBlend pour tout balancer à l'écran.
Donc pas mal de copies en fait.
Et là, grosse surprise.
Ma routine GDI éclate complètement la fonction GDI+, d'un facteur 6 o u 7.
J'aurais pourtant cru que GDI+, étant plus récent, était au moins a ussi performant que GDI ?!?
Plus récent oui, offrant plus de primitives de dessin oui, par contre plus rapide, généralement non.
Ceci-dit, ton test de comparaison est "injuste" parce que dans un cas (GDI), tu utilises un back-buffer et dans l'autre (GDI+) tu n'en utilises pas. Qu'est ce que ca donne si tu utilises un back-buffer avec GDI+ (gardes le même code, mais dessines juste dans un memoryDC et fait un BitBlt à l'éran une fois que le dessin est fait) ??
Arnaud MVP - VC
JM
a écrit :
Plus récent oui, offrant plus de primitives de dessin oui, par contre plus rapide, généralement non.
Ceci-dit, ton test de comparaison est "injuste" parce que dans un cas (GDI), tu utilises un back-buffer et dans l'autre (GDI+) tu n'en utilises pas. Qu'est ce que ca donne si tu utilises un back-buffer avec GDI+ (gardes le même code, mais dessines juste dans un memoryDC et fait un BitBlt à l'éran une fois que le dessin est fait) ??
Non, j'utilise déjà un memdc dans les deux cas. Sinon c'est moche
adebaene@club-internet.fr a écrit :
Plus récent oui, offrant plus de primitives de dessin oui, par contre
plus rapide, généralement non.
Ceci-dit, ton test de comparaison est "injuste" parce que dans un cas
(GDI), tu utilises un back-buffer et dans l'autre (GDI+) tu n'en
utilises pas. Qu'est ce que ca donne si tu utilises un back-buffer avec
GDI+ (gardes le même code, mais dessines juste dans un memoryDC et
fait un BitBlt à l'éran une fois que le dessin est fait) ??
Non, j'utilise déjà un memdc dans les deux cas.
Sinon c'est moche
Plus récent oui, offrant plus de primitives de dessin oui, par contre plus rapide, généralement non.
Ceci-dit, ton test de comparaison est "injuste" parce que dans un cas (GDI), tu utilises un back-buffer et dans l'autre (GDI+) tu n'en utilises pas. Qu'est ce que ca donne si tu utilises un back-buffer avec GDI+ (gardes le même code, mais dessines juste dans un memoryDC et fait un BitBlt à l'éran une fois que le dessin est fait) ??
Non, j'utilise déjà un memdc dans les deux cas. Sinon c'est moche