C++ Windows位图绘制文本

5

我该如何在图像上绘制文本(并设置字体和大小),然后将其保存为JPEG格式?

例如:

    CBitmap bitmap;
    bitmap.CreateBitmap(width, height, 1, 32, rgbData);

我想在位图上绘制一些文本:

    CImage image;
    image.Attach(bitmap);

    image.Save(_T("C:\\test.bmp"), Gdiplus::ImageFormatJPEG);
1个回答

3
CBitmap bitmap;
CBitmap *pOldBmp;
CDC MemDC;

CDC *pDC = GetDC();
MemDC.CreateCompatibleDC(pDC);
bitmap.CreateCompatibleBitmap(pDC, width, height );

pOldBmp = MemDC.SelectObject(&MyBmp);

CBrush brush;
brush.CreateSolidBrush(RGB(255,0,0));

CRect rect;
rect.SetRect (0,0,40,40);
MemDC.SelectObject(&brush);

MemDC.DrawText("Hello",6, &rect, DT_CENTER );
MemDC.SetTextColor(RGB(0,0,255));
GetDC()->BitBlt(0, 0, 50, 50, &MemDC, 0, 0, SRCCOPY);

//When done, than:
MemDC.SelectObject(pOldBmp);
ReleaseDC(&MemDC);
ReleaseDC(pDC);

bitmap.Save(_T("C:\\test.bmp"), Gdiplus::ImageFormatJPEG);

尝试使用这段代码片段。

谢谢,我在哪里可以设置字体和大小? - Armen Khachatryan
当我绘制亚美尼亚文本的时候,它为什么会显示为????? ,我已经设置好了 Courier AM 字体。 CFont font; font.CreatePointFont(80, "Courier AM"); memDC.SelectObject(font); - Armen Khachatryan
请使用Unicode字体和Unicode字符...顺便说一下,我也是亚美尼亚人;) - Arsen Mkrtchyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接