CreateRegionFromFile





5.00/5 (13投票s)
2000年5月27日

169864

3444
一个非常简单的函数,用于从 *.bmp 文件创建区域

引言
这个非常简单的函数从位图 (.bmp) 文件创建区域。支持 8、16、24 和 32 位颜色模式。
该函数接受两个参数
- hBmp- 位图图像的句柄
- color- 透明颜色
HRGN CreateRgnFromFile( HBITMAP hBmp, COLORREF color );
使用该函数非常简单。例如,如果您希望设置对话框的窗口形状,则在您的 OnInitDialog 处理程序中,执行以下操作
BOOL CFileRgnDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    // load image
    HBITMAP hBmp = (HBITMAP)LoadImage( AfxGetInstanceHandle(), 
                     "Rgn.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
    // if fail - nothing to do
    if ( hBmp == NULL ) return TRUE;
    // create region, let the RED color be transparent
    HRGN hRgn = CreateRgnFromFile( hBmp, RGB(255,0,0) );
    // build memory dc for background
    CDC* dc = GetDC();
    m_dcBkGrnd = CreateCompatibleDC( dc->m_hDC );
    ReleaseDC( dc );
    // select background image
    SelectObject( m_dcBkGrnd, hBmp );
    // set window size the same as image size
    SetWindowPos( NULL, 0, 0, m_dwWidth, m_dwHeight, 
                           SWP_NOZORDER | SWP_NOMOVE );
    // assign region to window
    SetWindowRgn( hRgn, FALSE );
    return TRUE;
}
历史
- 2001年12月8日- 16位模式的剪切和粘贴错误(白色作为透明不起作用)
- 最后一列的像素未被使用
- 现在可以使用未对齐(按宽度)的图像
 
- 2001年6月11日- ExtCreateRegionNT 问题(感谢 Martin 的报告)
 
许可证
本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。
作者可能使用的许可证列表可以在此处找到。
