基于VC++ PNG按钮的实现【5】
2009-09-23 13:49
281 查看
graph.DrawImage(m_pImageNum,20*5,0,140,0,14,23,UnitPixel);
//
该函数从
m_pImageClock
中剪切指定
rect
中的像素
draw
到指定位置
S
graph.DrawImage(m_pImageNum,20*6,0,14*(SystemTime.wSecond/10),
0,14,23,UnitPixel); //
该函数从
m_pImageClock
中剪切指定
rect
中的像素
draw
到指定位
/////
置
graph.DrawImage(m_pImageNum,20*7,0,14*(SystemTime.wSecond%10),
0,14,23,UnitPixel); //
该函数从
m_pImageClock
中剪切指定
rect
中的像素
draw
到指定位
/////
置
//
绘画结束
//
设置窗体的透明特性
SIZE sizeWindow={m_BakWidth,m_BakHeight};
POINT ptSrc={0,0};
DWORD dwExStyle=GetWindowLong(m_hWnd,GWL_EXSTYLE);//GWL_EXSTYLE;//
获得扩展窗口
////
风格。
if((dwExStyle&0x80000)!=0x80000)//dwExStyle&0x80000
显示
alpha
透明通道,如
//////
为
0x80000
窗体为透明,否则设置为透明
SetWindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle^0x80000);
BOOL bRet=FALSE;
//The UpdateLayeredWindow function updates the position, size, shape, content, and //translucency of a layered window.
//
刷新窗口函数
bRet= UpdateLayeredWindow( m_hWnd,hdcScreen,&ptWinPos,
&sizeWindow,m_hdcMemory,&ptSrc,0,&m_Blend,2);
//
释放环境
graph.ReleaseHDC(m_hdcMemory);
::ReleaseDC(m_hWnd,hdcScreen);
hdcScreen=NULL;
::ReleaseDC(m_hWnd,hdcTemp);
hdcTemp=NULL;
DeleteObject(hBitMap);
DeleteDC(m_hdcMemory);
m_hdcMemory=NULL;
return bRet;
}
void CGDIPClockDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
UpdateClockDisplay();
CDialog::OnTimer(nIDEvent);
}
void CGDIPClockDlg::OnRButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CDialog::OnRButtonUp(nFlags, point);
}
void CGDIPClockDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
//
禁止显示移动矩形窗体框
::SystemParametersInfo(SPI_SETDRAGFULLWINDOWS,TRUE,NULL,0);
//
非标题栏移动整个窗口
SendMessage(WM_SYSCOMMAND,0xF012,0);
PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));
CDialog::OnLButtonDown(nFlags, point);
}
5
结语
以上,介绍了在
Windows
下采用
VC++
进行
PNG
按钮的实现,并结合实例进行了实际运用说明。在传统的
DOS
环境中,要在打印机上打印一幅图时一件非常复杂的事情,用户必须根据打印机类型和指令规则向打印机输入数据。而
Windows
则提供
图形设备接口
GDI
,它是
Graphics Device Interface
的缩写。使得用户直接利用系统的
GDI
函数就能方便实现输入和输出,而不必关心与系统相连的外部设备类型。我们利用
GDI
所提供的众多函数就可以方便的在屏幕、打印机及其它输出设备上输出图形,文本等操作,能够方便的绘制漂亮的图形界面。
[4]
参 考 文 献
[1
]乔林,杨志刚等.Visual C++
6.0
高级编程技术[M
].
北京:中国铁道出版社,2000.
[2
]刘长明,杨工明.Visual C++
实战与提高[M
].
北京:中国铁道出版社,2001.
[3
]Jon Bate
s
·
Tim Tompkins.
实用Visual C++
6.0
教程[M
].
北京:清华大学出版社,2000.
[4
]郑阿奇,丁有何,郑进,周怡君.Visual C++
6.0
实用教程(第三版)[M
].
北京:电子工业出版社,2007.
//
该函数从
m_pImageClock
中剪切指定
rect
中的像素
draw
到指定位置
S
graph.DrawImage(m_pImageNum,20*6,0,14*(SystemTime.wSecond/10),
0,14,23,UnitPixel); //
该函数从
m_pImageClock
中剪切指定
rect
中的像素
draw
到指定位
/////
置
graph.DrawImage(m_pImageNum,20*7,0,14*(SystemTime.wSecond%10),
0,14,23,UnitPixel); //
该函数从
m_pImageClock
中剪切指定
rect
中的像素
draw
到指定位
/////
置
//
绘画结束
//
设置窗体的透明特性
SIZE sizeWindow={m_BakWidth,m_BakHeight};
POINT ptSrc={0,0};
DWORD dwExStyle=GetWindowLong(m_hWnd,GWL_EXSTYLE);//GWL_EXSTYLE;//
获得扩展窗口
////
风格。
if((dwExStyle&0x80000)!=0x80000)//dwExStyle&0x80000
显示
alpha
透明通道,如
//////
为
0x80000
窗体为透明,否则设置为透明
SetWindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle^0x80000);
BOOL bRet=FALSE;
//The UpdateLayeredWindow function updates the position, size, shape, content, and //translucency of a layered window.
//
刷新窗口函数
bRet= UpdateLayeredWindow( m_hWnd,hdcScreen,&ptWinPos,
&sizeWindow,m_hdcMemory,&ptSrc,0,&m_Blend,2);
//
释放环境
graph.ReleaseHDC(m_hdcMemory);
::ReleaseDC(m_hWnd,hdcScreen);
hdcScreen=NULL;
::ReleaseDC(m_hWnd,hdcTemp);
hdcTemp=NULL;
DeleteObject(hBitMap);
DeleteDC(m_hdcMemory);
m_hdcMemory=NULL;
return bRet;
}
void CGDIPClockDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
UpdateClockDisplay();
CDialog::OnTimer(nIDEvent);
}
void CGDIPClockDlg::OnRButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CDialog::OnRButtonUp(nFlags, point);
}
void CGDIPClockDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
//
禁止显示移动矩形窗体框
::SystemParametersInfo(SPI_SETDRAGFULLWINDOWS,TRUE,NULL,0);
//
非标题栏移动整个窗口
SendMessage(WM_SYSCOMMAND,0xF012,0);
PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));
CDialog::OnLButtonDown(nFlags, point);
}
5
结语
以上,介绍了在
Windows
下采用
VC++
进行
PNG
按钮的实现,并结合实例进行了实际运用说明。在传统的
DOS
环境中,要在打印机上打印一幅图时一件非常复杂的事情,用户必须根据打印机类型和指令规则向打印机输入数据。而
Windows
则提供
图形设备接口
GDI
,它是
Graphics Device Interface
的缩写。使得用户直接利用系统的
GDI
函数就能方便实现输入和输出,而不必关心与系统相连的外部设备类型。我们利用
GDI
所提供的众多函数就可以方便的在屏幕、打印机及其它输出设备上输出图形,文本等操作,能够方便的绘制漂亮的图形界面。
[4]
参 考 文 献
[1
]乔林,杨志刚等.Visual C++
6.0
高级编程技术[M
].
北京:中国铁道出版社,2000.
[2
]刘长明,杨工明.Visual C++
实战与提高[M
].
北京:中国铁道出版社,2001.
[3
]Jon Bate
s
·
Tim Tompkins.
实用Visual C++
6.0
教程[M
].
北京:清华大学出版社,2000.
[4
]郑阿奇,丁有何,郑进,周怡君.Visual C++
6.0
实用教程(第三版)[M
].
北京:电子工业出版社,2007.
相关文章推荐
- 基于VC++PNG 按钮的实现
- 基于VC++ PNG按钮的实现【4】
- 基于VC++ PNG按钮的实现【1】
- 基于VC++PNG按钮的实现
- 基于VC++ PNG按钮的实现【2】
- 基于VC++ PNG按钮的实现【3】
- 基于VC++ PNG按钮的实现
- VC下利用Picture控件实现png图片按钮(鼠标初始、按下、松开、获得焦点四种状态)
- VC中使用GDI+实现为按钮加载Png图片
- VC下利用Picture控件实现png图片按钮(鼠标初始、按下、松开、获得焦点四种状态)
- VC中使用GDI+实现为按钮加载Png图片
- VC下利用Picture控件实现png图片按钮(鼠标初始、按下、松开、获得焦点四种状态)
- VC下利用Picture控件实现png图片按钮(鼠标初始、按下、松开、获得焦点四种状态)
- VC中使用GDI+实现为按钮加载Png图片
- VC下利用Picture控件实现png图片按钮(鼠标初始、按下、松开、获得焦点四种状态)
- VC中使用GDI+实现为按钮加载Png图片
- MFC利用GdipButton实现png按钮,并在此基础上实现图片适应按钮尺寸的缩放
- 基于VC 6.0使用C语言实现俄罗斯方块
- 基于jquery实现的鼠标滑过按钮改变背景图片
- 基于jQuery实现的文字按钮表单特效整理