在内存中画图,保存为bmp

代码是将输入的文字保存为bmp,并不在dc中显示

    CString text = "abcd1123";
    RECT rect;
    rect.left = 0;
    rect.right = 0;
    rect.top = 0;
    rect.bottom = 0;

    HDC hDC = ::GetDC(NULL);
    HDC hdcImage;            
    HDC hdcMEM;        
    hdcMEM = CreateCompatibleDC(hDC);
    hdcImage = CreateCompatibleDC(hDC);
    TEXTMETRIC tm;
    GetTextMetrics(hdcMEM, &tm);
    rect.right = tm.tmAveCharWidth * strlen(text);
    rect.bottom = tm.tmHeight;
    CImage image;
    HBITMAP bmp = ::CreateCompatibleBitmap(hDC, rect.right, rect.bottom);

    image.Create(rect.right, rect.bottom, 24);
    ::SelectObject(hdcMEM, bmp);
    ::SelectObject(hdcImage, image);

    RECT rt;
    rt.bottom = 0;
    rt.left = 0;
    rt.right = 0;
    rt.top = 0;
//     DrawText(hdcMEM, text, strlen(text), &rt, DT_SINGLELINE|DT_LEFT| DT_CALCRECT);
//     DrawText(hdcMEM, text, strlen(text), &rt, DT_SINGLELINE|DT_LEFT);
    
    Rectangle(hdcMEM, 0, 0, 100, 100);
    TextOut(hdcMEM, 0, 0, text, strlen(text));
    ::StretchBlt(hdcImage, 0, 0, rect.right, rect.bottom, hdcMEM, 0, 0, rect.right, rect.bottom, SRCCOPY);
    image.Save("e:\\1234.bmp");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值