MFC CEdit 控件利用GDI+设置png背景图,同时设置文本垂直居中(多行模式)


需求

由于如果利用bmp图像作为控件背景图片经常会出现失真、变形的问题,而且只能使用bmp图像。所以用GDI+不仅可以读取bmp之外的图片格式,还可以解决变形的问题。本文档就是基于此想法实现的。

1、读取png图像作为CEdit控件背景图像
2、文本垂直居中


一、文件准备

通过命令
git clone https://gitee.com/ashuiaaaa/mfc-related-data.git

将相关代码拷贝下来。

二、使用步骤

  1. 有关GDI+库的配置以及在项目中的初始化需要靠你们自己去找资料,其实网上挺多的我就不赘述了。
  2. 将项目的CTransparentEdit文件夹下的 CTransparentEdit.hCTransparentEdit.cpp两个文件复制到你的项目文件中;
  3. 将项目的CTransparentEdit文件夹下的 pch.hpch.cpp 文件中的函数 :
    Gdiplus::Image* LoadFromRes(UINT nResID, LPCTSTR lpszResType, HINSTANCE hInstance)
    复制到你的pch文件中。
  4. 在你的dialog中 #include “CTransparentEdit.h”
  5. 将你的Edit Control变量绑定的变量类型改为 CTransparentEdit 即可。
  6. 将在资源管理器中,点击Edit Control属性,按以下图片设置:
    CEdit Control 属性配置
  7. 如果没有效果,则一般是 CTransparentEdit 类 ON_WM_NCCALCSIZE()没有响应到。
    解决:直接在该控件的父类窗口(比如我的父类窗口是CGDIPLUSDlg)的OnInitDialog() (比如我是 BOOL CGDIPLUSDlg::OnInitDialog())中调用
m_Edit.SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_DRAWFRAME);

即可。
在这里插入图片描述

三、效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值