现在工程工应用中需要判断图片是否全通透,请问如何判断?谢谢!不知道GDI+能够做到,现在bmp、gif、png都有透明的图片

解决方案 »

  1.   


    //设置材质alpha
    void ENskinAt::setSkMaterialAlpha(DWORD IID,D3DXVECTOR4 materialAlha)
    {
    ENskinAtData* ob= GetSkinListOb( IID );
    if( ob == NULL )
    {
    MessageBox(hWnd, "LHxxRender_SKINAT()","ID为空,出错", MB_OK);
    return;
    }
    ob->LHxxMaterialAlpha=materialAlha;

    // Look through all subsets
    for(DWORD i=0;i<ob->g_Mesh->NumMaterials;i++)
    {
    if(ob->LHxxMaterialAlpha.x!=-1)
    {
    ob->g_Mesh->pMaterials[i].MatD3D.Diffuse.r=ob->LHxxMaterialAlpha.x;
    }
    if(ob->LHxxMaterialAlpha.y!=-1)
    {
    ob->g_Mesh->pMaterials[i].MatD3D.Diffuse.g=ob->LHxxMaterialAlpha.y;
    }
    if(ob->LHxxMaterialAlpha.z!=-1)
    {
    ob->g_Mesh->pMaterials[i].MatD3D.Diffuse.b=ob->LHxxMaterialAlpha.z;
    }
    if(ob->LHxxMaterialAlpha.w!=-1)
    {
    ob->g_Mesh->pMaterials[i].MatD3D.Diffuse.a=ob->LHxxMaterialAlpha.w;
    }

    }
    }
    //获取材质alpha
    D3DXVECTOR4 ENskinAt::getSkMaterialAlpha(DWORD IID)
    {
    ENskinAtData* ob= GetSkinListOb( IID );
    if( ob == NULL )
    {
    MessageBox(hWnd, "LHxxRender_SKINAT()","ID为空,出错", MB_OK);
    return D3DXVECTOR4(0,0,0,0);
    }
    return ob->LHxxMaterialAlpha;
    }
      

  2.   

    只有32位的图像或者位的索引色图像才有可能出现完全透明的现象,32位图像你就要判断他的每个像素的alpha值是否都为0,索引色出现完全透明的可能性更小,首先得要他的调色板有一项alpha为0,其次要求他的所有的图像像素的颜色值都是这个索引值。