如何用MFC创建透明画板

如何用MFC创建透明的背景,不透明的绘画

1,设置窗体为全屏幕显示

//获取屏幕的长和宽

int iWidth = ::GetSystemMetrics(SM_CXSCREEN);
int iHeight = ::GetSystemMetrics(SM_CYSCREEN);
//设置窗体位置和大小
SetWindowPos(NULL, 0, 0, iWidth, iHeight,SWP_NOZORDER|SWP_SHOWWINDOW);

2,设置窗体为透明状体,若将窗体设置为完全透明,则捕获不到鼠标事件,所以设置为近乎透明。

SetWindowLong(GetSafeHwnd(),
GWL_EXSTYLE,
::GetWindowLongPtr(GetSafeHwnd(), GWL_EXSTYLE) | WS_EX_LAYERED);
this->SetLayeredWindowAttributes(RGB(255,0,0), (255 * 0.5) / 100, LWA_ALPHA | ULW_COLORKEY);

     SetLayeredWindowAttributes函数说明:

crKey:掩码颜色

bAlpha:透明度

dwFlags:可以为两个值:

LWA_ALPHA:掩码无效,全部设置为第二个参数的透明度。

LWA_COLORKEY:透明度无效,掩码颜色为透明

可以与运算

3,获取屏幕dc,OmMouseMove中

CWindowDC dc(GetDesktopWindow());
CPen pen;
pen.CreatePen(PS_SOLID, 2, RGB(0, 0, 0));
dc.SelectObject(&pen);
if (m_isDown)
{
dc.MoveTo(m_ptStart);
dc.LineTo(point);
m_ptStart = point;
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值