C++ | 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);

}

目录
相关文章
|
10月前
|
数据可视化 编译器 程序员
【好一朵美丽的玫瑰花】(C++代码实现+EasyX图形化界面)
【好一朵美丽的玫瑰花】(C++代码实现+EasyX图形化界面)
103 0
|
11月前
|
C++
c++搭建的车道线和路牌的识别系统 使用qt界面
c++搭建的车道线和路牌的识别系统 使用qt界面
51 0
|
C++ 计算机视觉 Python
Qt+C++堆叠多窗口界面切换
这篇博客针对<<Qt+C++堆叠多窗口界面切换>>编写代码,代码整洁,规则,易读。 学习与应用推荐首选。
146 0
|
C++ 计算机视觉 Python
Qt+C++窗体界面中英文语言切换
这篇博客针对<<Qt+C++窗体界面中英文语言切换>>编写代码,代码整洁,规则,易读。 学习与应用推荐首选。
164 0
|
数据可视化 程序员 编译器
【好一朵美丽的玫瑰花】(C++代码实现+EasyX图形化界面)
以程序员的方式撒狗粮,专业浪漫,值得拥有!为您展示一朵迷人的七夕玫瑰花
505 0
【好一朵美丽的玫瑰花】(C++代码实现+EasyX图形化界面)
|
机器学习/深度学习 C++ Windows
C++彩色数据流动界面
一个数据流动界面     #include #include #include #include #include #include using namespace std ; #define MAX 20 #define LEN 5 char t...
753 0
|
程序员 C++ Windows
windows下VC界面 DIY系列1----写给想要写界面的C++程序员的话
        很早就想写关于C++ UI开发的一系列博文,博客专栏刚审核通过,就马上开始刷博文,不能辜负自己的一番热血,我并不是写界面的高手,只想通过写博文提高我自己的技术积累,也顺便帮助大家解决界面开发的瓶颈。
1374 0