IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Ajout de texte sur BITMAP


Sujet :

MFC

  1. #1
    Membre régulier Avatar de sly078
    Inscrit en
    Avril 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 116
    Points : 116
    Points
    116
    Par défaut Ajout de texte sur BITMAP
    Bonjour,

    Comme sur le post http://www.developpez.net/forums/d50...ajouter-texte/, je cherche à ajouter du texte sur des images bitmap. Je n'ai pas besoin d'afficher lm'image à l'écran, simplement de la charger (ou de créer une image monochrome), ajouter du texte et sauvegarder l'image.

    Je parviens à charger l'image par exemple avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HBITMAP hvar = (HBITMAP) LoadImage(NULL,"C:\\image.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE)
    Je parviens à créer un Font et à utiliser la méthode DrawText() sur mon document :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    CFont font;
    	VERIFY(font.CreateFont(
    	   12,                        // nHeight
    	   0,                         // nWidth
    	   0,                         // nEscapement
    	   0,                         // nOrientation
    	   FW_NORMAL,                 // nWeight
    	   FALSE,                     // bItalic
    	   FALSE,                     // bUnderline
    	   0,                         // cStrikeOut
    	   ANSI_CHARSET,              // nCharSet
    	   OUT_DEFAULT_PRECIS,        // nOutPrecision
    	   CLIP_DEFAULT_PRECIS,       // nClipPrecision
    	   DEFAULT_QUALITY,           // nQuality
    	   DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
    	   "Arial"));                 // lpszFacename
     
    	// Do something with the font just created... 
    	RECT rect = {20,30,180,230}; 
    	RECT * lpRect= new RECT;
    	*lpRect=rect;
     
    	CFont* def_font = pDC->SelectObject(&font);
    	pDC->DrawText("hello",lpRect,DT_INTERNAL);
    	pDC->SelectObject(def_font);
     
    	// Done with the font.  Delete the font object.
    	font.DeleteObject();
    Mais je ne sais pas comment indiquer que je souhaite écrire sur l'image (utiliser DrawText() sur le bitmap). Faut-il que le pDC pointe sur l'image !? Comment dois-je faire ?

    Merci de votre aide,

    Sly

  2. #2
    Membre régulier Avatar de sly078
    Inscrit en
    Avril 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 116
    Points : 116
    Points
    116
    Par défaut
    J'avance et mon problème évolue. J'utilise GDI+ pour ajouter du texte sur une image (du coup mon problème concerne Visual C++ mais plus MFC). Par exemple, je peux charger une image, ajouter du texte et sauvegarder l'image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Gdiplus::Image image(L"C:\\image\\fondtitre.bmp");
    Gdiplus::Graphics* imageGraphics = Gdiplus::Graphics::FromImage(&image);
     
    Gdiplus::SolidBrush oBrush			((u32)Gdiplus::Color::White);
    Gdiplus::Font		oCurrentFont	(L"Verdana", 10, Gdiplus::FontStyleRegular, Gdiplus::UnitPoint, NULL);
    Gdiplus::RectF rect(0, 0, 200, 40);
     
    Gdiplus::StringFormat format;							format.SetAlignment(Gdiplus::StringAlignmentCenter);							format.SetLineAlignment(Gdiplus::StringAlignmentCenter);
     
    imageGraphics->DrawString(L"Look at this text!",wcslen(L"Look at this text!"),&oCurrentFont, rect,	&format, &oBrush);
     
    CLSID  encoderClsid;
    GetEncoderClsid(L"image/bmp", &encoderClsid);
     
    image.Save(L"C:\\image\\fondtitregdi.bmp",&encoderClsid);
    Je souhaite pouvoir faire autre chose : créer un rectangle d'une couleur, ajouter du texte dans ce rectangle et sauvegarder cela sous forme d'image.

    J'arrive à créer un rectangle et à y ajouter du texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Gdiplus::SolidBrush solidBrush(Gdiplus::Color(255, 255, 0, 0));
    graphics.FillRectangle(&solidBrush,rect);
    graphics.DrawString(L"Look at this text!",wcslen(L"Look at this text!"),&oCurrentFont, rect,	&format, &oBrush);
    Par contre, je ne sais pas comment créer une image (instance de la classe Image) à partir d"un objet Graphics. Une fois que j'aurai l'image je pourrai la sauvegarder mais il ne semble pas possible de sauvegarder ce qu'affiche le graphics directement. Quelqu'un saurait-il comment procéder ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/06/2010, 15h52
  2. [GD] Ajout de texte sur image
    Par regis94 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/10/2008, 08h10
  3. [PHOTOSHOP] Ajout du texte sur une image
    Par khokho dans le forum Imagerie
    Réponses: 3
    Dernier message: 28/03/2007, 14h05
  4. [GD] ajouter un texte sur une image uniquement à l'impression signature numérique
    Par DrHelmut dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 05/10/2006, 16h13
  5. Ajouter du texte sur une vidéo
    Par ChIcKeN78 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 01/06/2005, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo