あなたは、この目的のために使用することができますbased on this tutorial on Microsoft.com私は一緒に迅速Transparancy Converterクラスを投げた:あなたがこれをでたら、
using System;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Interop;
namespace WpfApplication2
{
class TransparancyConverter
{
private readonly Window _window;
public TransparancyConverter(Window window)
{
_window = window;
}
public void MakeTransparent()
{
var mainWindowPtr = new WindowInteropHelper(_window).Handle;
var mainWindowSrc = HwndSource.FromHwnd(mainWindowPtr);
if (mainWindowSrc != null)
if (mainWindowSrc.CompositionTarget != null)
mainWindowSrc.CompositionTarget.BackgroundColor = System.Windows.Media.Color.FromArgb(0, 0, 0, 0);
var margins = new Margins
{
cxLeftWidth = 0,
cxRightWidth = Convert.ToInt32(_window.Width) * Convert.ToInt32(_window.Width),
cyTopHeight = 0,
cyBottomHeight = Convert.ToInt32(_window.Height) * Convert.ToInt32(_window.Height)
};
if (mainWindowSrc != null) DwmExtendFrameIntoClientArea(mainWindowSrc.Handle, ref margins);
}
[StructLayout(LayoutKind.Sequential)]
public struct Margins
{
public int cxLeftWidth;
public int cxRightWidth;
public int cyTopHeight;
public int cyBottomHeight;
}
[DllImport("DwmApi.dll")]
public static extern int DwmExtendFrameIntoClientArea(IntPtr hwnd, ref Margins pMarInset);
}
}
あなたのXAMLに透明な背景の属性を追加し、Window_Loadedイベントをサブスクライブして呼び出しますMakeTransparent方法:
<Window etc etc Background="Transparent" Loaded="Window_Loaded">
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var transparancyConverter = new TransparancyConverter(this);
transparancyConverter.MakeTransparent();
}
スクリーンショットは、以下である:
出典
2013-06-04 21:41:41
JMK
大変ありがとうございました。私はそれを持って遊びます。 –
ほとんどの作業。それはウィンドウ7では動作していますが、ウィンドウ8では動作していないようです。前もって感謝します! –
@StefanVasiljevicあなたが8に多大な運があるとは思わない、上記のコードはWindows 8には存在しないAeroを悲しみに使っています – JMK