2

您可以使用属性Windows Forms使您的应用程序半透明,如下所示:Opacity

在此处输入图像描述

我试图用 WPF 达到相同的结果,但它看起来是不可能的。如果我改变了OpacityMainWindow我只会获得带有变暗内容的相同窗口。使用AllowTransparency会产生很多问题,因为您必须以某种方式重建框架并且看起来像一个过于复杂的解决方案。我还尝试了以下方法:

protected override void OnSourceInitialized(EventArgs e)
{
    base.OnSourceInitialized(e);

    m_Handle = (new WindowInteropHelper(this)).Handle;

    if (Properties.Settings.Default.Transparency)
        NativeMethods.MakeWindowTransparent(m_Handle);
}

internal static void MakeWindowTransparent(IntPtr windowHandle)
{
    if (Environment.Is64BitProcess)
    {
        Int32 extendedStyle = GetWindowLong64(windowHandle, WindowLongIndex.ExtendedStyle).ToInt32();
        SetWindowLong64(windowHandle, WindowLongIndex.ExtendedStyle, (new IntPtr(extendedStyle | 0x00000020)));
    }
    else
    {
        Int32 extendedStyle = GetWindowLong32(windowHandle, WindowLongIndex.ExtendedStyle);
        SetWindowLong32(windowHandle, WindowLongIndex.ExtendedStyle, (extendedStyle | 0x00000020));
    }
}

那么t也不起作用。说真的,为什么会有这样的限制?有什么解决方法吗?

4

0 回答 0