一个老掉牙的问题

在制作异形窗体时,显示器的色深有时会影响窗体的正常显示,在msdn中,有如下一句话:
" 如果监视器的颜色深度设置大于 24 位,则不管 TransparencyKey 属性是如何设置的,窗体的非透明部分都会产生显示问题。若要避免出现这种问题,请确保“显示”控制面板中的监视器颜色深度的设置小于 24 位。当开发具有这种透明功能的应用程序时,请牢记应使您的用户意识到此问题。"

经过研究发现几个问题,首先,.net平台实现透明窗体,是采用的如下api函数:
[DllImport("user32.dll", CharSet=CharSet.Auto, SetLastError=true, ExactSpelling=true)]
public static extern bool SetLayeredWindowAttributes(HandleRef hwnd, int crKey, byte bAlpha, int dwFlags);

SetLayeredWindowAttributes,这个API,通常是用于控制窗体的透明度,这个API仅在Windows2000以上的版本才有,比如一般意义实现淡入淡出效果的窗体(如开始菜单),都可以使用该函数来实现。

posted @ 2004-11-09 12:56  一根神棍研古今  阅读(369)  评论(0编辑  收藏  举报
Web Counter