如题
我想做个半透明的按钮
我现在用BLENDFUNCTION bm;
memset(&bm,0,sizeof(bm));
bm.BlendOp=AC_SRC_OVER;
bm.BlendFlags=0;
bm.SourceConstantAlpha = m_nalphaValue;
TRACE("%d\n",m_nalphaValue);
bm.AlphaFormat=0;
AlphaBlend(*pDC,x,y,w,h,*memDC,xSource,ySource,w,h,bm); 来实现半透明的。 鼠标停留在按钮上时改变m_nalphaValue为200; 鼠标离开按钮是改变m_nalphaValue为50;
是在重写DrawItem中调用的。 现在的问题是,鼠标移动到按钮上时按钮能变亮了,离开按钮后没反应。 谁能帮帮我啊。谢谢了
我想做个半透明的按钮
我现在用BLENDFUNCTION bm;
memset(&bm,0,sizeof(bm));
bm.BlendOp=AC_SRC_OVER;
bm.BlendFlags=0;
bm.SourceConstantAlpha = m_nalphaValue;
TRACE("%d\n",m_nalphaValue);
bm.AlphaFormat=0;
AlphaBlend(*pDC,x,y,w,h,*memDC,xSource,ySource,w,h,bm); 来实现半透明的。 鼠标停留在按钮上时改变m_nalphaValue为200; 鼠标离开按钮是改变m_nalphaValue为50;
是在重写DrawItem中调用的。 现在的问题是,鼠标移动到按钮上时按钮能变亮了,离开按钮后没反应。 谁能帮帮我啊。谢谢了
解决方案 »
- 串口问题,高手速帮忙!!!谢谢!!!急!!!!!
- 请教:有没有栅格图像(BMP)转换成矢量图像(PDF等格式)的VC的源代码??
- 求可以实时显示声卡和录音时波形图的dll,可以应用于vb等程序中。(用钱买也可以)
- 你好,请问有没有人会做QQ界面设计以及全部完成该聊天软件的呢?这样的人有吗?
- 在线等,立马给分!
- 如何获得DLL文件的版本号?谢谢
- 怎样新建一个不需要资源,但能用MFC函数的工程??
- CTime ->CString
- gloox 远程控制
- windows匿名管道问题..创建进程时失败...附上代码.
- VC 向SQL里面添加记录 编译没问题 运行就 runtime error
- MFC中如何最小化所有窗口(显示桌面)
void CHoverButtonEx::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (!m_bTracking)
{
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = m_hWnd;
tme.dwFlags = TME_LEAVE|TME_HOVER;
tme.dwHoverTime = 1;
m_bTracking = _TrackMouseEvent(&tme);
m_point = point;
}
CBitmapButton::OnMouseMove(nFlags, point);
}
//画透明的位图
void CHoverButtonEx::DrawTransparentBitmap(CDC* pDC, int x, int y,int w, int h,CDC* memDC,
int xSource, // = 0
int ySource,int alphavalue) // = 0)
{ BLENDFUNCTION bm;
memset(&bm,0,sizeof(bm));
bm.BlendOp=AC_SRC_OVER;
bm.BlendFlags=0;
bm.SourceConstantAlpha = m_nalphaValue;
TRACE("%d\n",m_nalphaValue);
bm.AlphaFormat=0;
AlphaBlend(*pDC,x,y,w,h,*memDC,xSource,ySource,w,h,bm); }
//鼠标碰撞到按钮
LRESULT CHoverButtonEx::OnMouseHover(WPARAM wparam, LPARAM lparam)
{
m_bHover=TRUE;
Invalidate(); return 0;
}
//鼠标离开按钮
LRESULT CHoverButtonEx::OnMouseLeave(WPARAM wparam, LPARAM lparam)
{
m_bTracking = FALSE;
m_bHover=FALSE;
Invalidate();
return 0;
}
{
if ((m_ButtonSize.cx == 0) || (m_ButtonSize.cy == 0))
{
UINT style = GetButtonStyle();
style &= ~BS_OWNERDRAW;
SetButtonStyle(style);
}
CDC * mydc=CDC::FromHandle(lpDrawItemStruct->hDC);
CDC * MemDC = new CDC;
MemDC->CreateCompatibleDC(mydc);
CBitmap * p0ldBitmap = MemDC->SelectObject(&mybitmap);
if(m_bHover) //停留在按钮上
{
m_nalphaValue = 200;
TRACE("%d\n",m_nalphaValue);
//mydc->BitBlt(0,00,m_ButtonSize.cx,m_ButtonSize.cy,MemDC,21,0,SRCCOPY);
DrawTransparentBitmap(mydc,0,0,m_ButtonSize.cx,m_ButtonSize.cy,MemDC,21,0,200);
}else
{
m_nalphaValue = 50;
TRACE("%d\n",m_nalphaValue);
mydc->BitBlt(0,00,m_ButtonSize.cx,m_ButtonSize.cy,MemDC,42,0,SRCCOPY);
//DrawTransparentBitmap(mydc,0,0,m_ButtonSize.cx,m_ButtonSize.cy,MemDC,42,0,200);
} MemDC->SelectObject(p0ldBitmap);
delete MemDC;
/*delete MemDC;
mydc->DeleteDC();*/
}
大哥:我用的图是位图的,你给我个PNG的,我还要转换一下?