65.9K
CodeProject 正在变化。 阅读更多。
Home

CreateRegionFromFile

starIconstarIconstarIconstarIconstarIcon

5.00/5 (13投票s)

2000年5月27日

viewsIcon

169864

downloadIcon

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日
    • ExtCreateRegion NT 问题(感谢 Martin 的报告)

许可证

本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。

作者可能使用的许可证列表可以在此处找到。

© . All rights reserved.