需求
由于如果利用bmp图像作为控件背景图片经常会出现失真、变形的问题,而且只能使用bmp图像。所以用GDI+不仅可以读取bmp之外的图片格式,还可以解决变形的问题。本文档就是基于此想法实现的。1、读取png图像作为CEdit控件背景图像
2、文本垂直居中
一、文件准备
通过命令git clone https://gitee.com/ashuiaaaa/mfc-related-data.git
将相关代码拷贝下来。
二、使用步骤
- 有关GDI+库的配置以及在项目中的初始化需要靠你们自己去找资料,其实网上挺多的我就不赘述了。
- 将项目的CTransparentEdit文件夹下的
CTransparentEdit.h
和CTransparentEdit.cpp
两个文件复制到你的项目文件中; - 将项目的CTransparentEdit文件夹下的
pch.h
和pch.cpp
文件中的函数 :
Gdiplus::Image* LoadFromRes(UINT nResID, LPCTSTR lpszResType, HINSTANCE hInstance)
复制到你的pch文件中。 - 在你的dialog中
#include “CTransparentEdit.h”
; - 将你的Edit Control变量绑定的变量类型改为
CTransparentEdit
即可。 - 将在资源管理器中,点击Edit Control属性,按以下图片设置:
- 如果没有效果,则一般是 CTransparentEdit 类
ON_WM_NCCALCSIZE()
没有响应到。
解决:直接在该控件的父类窗口(比如我的父类窗口是CGDIPLUSDlg)的OnInitDialog()
(比如我是BOOL CGDIPLUSDlg::OnInitDialog()
)中调用
m_Edit.SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_DRAWFRAME);
即可。