C++ | GDI+绘制界面

举报
黑兔子 发表于 2022/08/01 17:49:36 2022/08/01
【摘要】 GDI+绘制界面

GDI: (Graphics Device Interfase)图形设备接口,是一个应用程序与输出设备之间的中介。

运行环境: Gdiplus.dll 包含在Windows系统中。【在system32中包含Gdiplus.dll文件】。

1.包含头文件: #include <Gdiplus.h>
2.链接库文件: 属性->配置->连接器->输入->附加依赖项->Gdiplus.lib;
3.定义成员变量: ULONG_PTR m_gdiplusToken;
4.在CMYAPP类的函数InitInstance()中加入:
        GdiplusStartupInput gdiplusStartupInput;
        GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
5.在CMYAPP类的函数ExitInstance()中加入:
        GdiplusShutdown(m_gdiplusToken);
6.一个Text属性结构体:
typedef struct{
        RectF rectF;//文字区域
        Color color;//文字颜色
        CString text;//文本
        int fontSize;//文字大小
        Gdiplus::StringAlignment styleX; //水平对齐方式
        Gdiplus::StringAlignment styleY; //垂直对齐方式
        Gdiplus::StringFormatFlags styleWrap; //是否换行
        int fontArial; //是否粗体
        CString fontStyle; //字体名称
}m_Text;
7.一个Image属性结构体:
typedef struct{
        RectF rectF;//图片区域
        CString szPath; //图片路径
}m_Image;
8.绘制文字:
Void SetGDIFont(m_Text text, HDC hdc)
{
        Graphics      graphics(hdc);
        SolidBrush    brush(text.color); //字体颜色
        FontFamily    fontFamily(text.fontStyle);
        Gdiplus::Font font(&fontFamily, text.fontSize, text.fontArial, UnitPixel);
        RectF         rectF(text.rectF);
        graphics.SetTextRenderingHint(TextRenderingHintAntiAlias); // 平滑处理
        StringFormat stringformat = new StringFormat;
        stringformat.SetAlignment(text.styleX);
        stringformat.SetLineAlignment(text.styleY);
        graphics.DrawString(text.text,-1,&font,rectF,&stringformat,&brush); //绘制
        graphics.ReleaseHDC(hdc);
}
9.绘制图片:
void SetGDIImage(m_Image image, HDC hdc)
{
        Graphics      graphics(hdc);
        Image image(szImagePath,FALSE);
        graphics.DrawImage(&image, image.rectF.left, image.rectF.top,
                 image.rectF.right-rectF.left, image.rectF.bottom-rectF.top); //绘制
        graphics.ReleaseHDC(hdc);
}

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。