Дочерние формы, как сделать, чтобы они были разной прозрачности? - C#

Узнай цену своей работы

Формулировка задачи:

как в Paint.net

Решение задачи: «Дочерние формы, как сделать, чтобы они были разной прозрачности?»

textual
Листинг программы
public class Transparency
{
    const int GWL_EXSTYLE = -20;
    const int WS_EX_LAYERED = 0x80000;
    const int LWA_COLORKEY = 1;
    const int LWA_ALPHA = 2;
    IntPtr hwnd;
 
    public Transparency(IntPtr hwnd)
    {
        this.hwnd = hwnd;
    }
 
    ~Transparency()
    {
        ClearTransparency();
    }
 
    public bool SetAlphaTransparency(byte alpha)
    {
        return SetTransparency(0, alpha, LWA_ALPHA);
    }
 
    public bool SetTransparencyColor(uint rgb)
    {
        return SetTransparency(rgb, 0, LWA_COLORKEY);
    }
 
    public bool SetTransparency(uint rgb, byte alpha)
    {
        return SetTransparency(rgb, alpha,
                LWA_COLORKEY | LWA_ALPHA);
    }
 
    public bool SetTransparency(uint rgb, byte alpha, uint flags)
    {
        if (!IsWindow(hwnd)) return false;
        int exstyle = GetWindowLong(hwnd, GWL_EXSTYLE);
        if (SetWindowLong(hwnd, GWL_EXSTYLE,
                exstyle | WS_EX_LAYERED)) {
            if (SetLayeredWindowAttributes(hwnd, rgb, alpha, flags))
                return true;
        }
        return false;
    }
 
    public bool ClearTransparency()
    {
        if (!IsWindow(hwnd)) return false;
        int exstyle = GetWindowLong(hwnd, GWL_EXSTYLE);
        return (SetWindowLong(hwnd, GWL_EXSTYLE,
                exstyle ^ WS_EX_LAYERED));
    }
 
    [DllImport("user32.dll")]
    static extern bool IsWindow(IntPtr hwnd);
 
    [DllImport("user32.dll")]
    static extern bool SetLayeredWindowAttributes(IntPtr hwnd,
            uint crKey, byte bAlpha, uint dwFlags);
 
    [DllImport("user32.dll")]
    static extern bool SetWindowLong( IntPtr hwnd,
            int nIndex, int dwNewLong);
 
    [DllImport("user32.dll")]
    static extern int GetWindowLong(IntPtr hwnd, int nIndex);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы