2017-08-24 11 views
0

Je viens de commencer à utiliser ATL :: CImage dans mon projet MFC, et c'est une question très basique à ce sujet. Je sais que les membres ATL :: CImage supportent AlphaBlend() pour contrôler la transparence, et plgblt() pour la rotation. Mais ils sont tous les fonctions indépendantes pour seulement "affichage" sur DC, si je comprends bien. Comment puis-je appliquer à la fois la transparence et la rotation de l'image et l'afficher/l'enregistrer?Comment faire pivoter et rendre l'image semi-transparente en même temps en utilisant ATL :: CImage?

Je sais que GDI + supporte tout ce que je veux, mais je veux aussi savoir comment les réaliser avec les membres de la classe CImage.

Merci.

+1

Vous pouvez également envisager [boost GIL] (http://www.boost.org/doc/libs/develop/libs/gil/doc/index.html). Je l'ai fait pour être libre de l'API Windows. [Ici] (http://lakeweb.net/temp/gil.cpp) est ce à quoi il ressemble. – lakeweb

Répondre

1

Ceci n'est pas possible de la même manière. Vous pouvez utiliser un contrôleur de domaine temporaire pour chaque opération.

  1. Créez un contrôleur de domaine avec un bitmap de la taille requise.
  2. Effectuez l'opération du CImage dans le contrôleur de domaine.
  3. Récupérez le Bitmap du DC et formez un nouveau CImage ou travaillez simplement avec le DC.

Le meilleur moyen est toujours d'utiliser GDI + pour effectuer de telles opérations. CImage n'est nécessaire que lorsque vous devez stocker le résultat intermédiaire ou que vous devez le réutiliser.