WPF阴影和捕获屏幕
本文关键字:屏幕 阴影 WPF | 更新日期: 2023-09-27 18:08:43
我创建了一个阴影窗口,代码如下
<Grid Background="Red" Margin="0">
<Grid.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="1" Direction="270" Color="Red"/>
</Grid.Effect>
<Grid Margin="1" Background="White">
</Grid>
</Grid>
结果是成功的,但当我尝试用alt+打印scr捕获windows屏幕截图时空格是这样的
第一http://puu.sh/9rK9b/4dbd9a3b46.png我想捕获屏幕内的网格区域,除了阴影区域,像这样
第二http://puu.sh/9rKcj/098796a6c7.png您需要手动复制alt+print scr的功能以获得所需的行为。
首先,您需要钩入消息循环并沿着这些行拦截按:
ComponentDispatcher.ThreadFilterMessage += new ThreadMessageEventHandler(OnThreadMessage);
static void OnThreadMessage(ref MSG msg, ref bool handled)
{
if (!handled)
{
if (msg.message == WmHotKey)
{
// intercept alt+print screen here, do custom action
}
}
}
然后你需要从ui元素中生成你想要的图像,并沿着以下几行设置它到剪贴板(uiElement将是你的Grid):
var bmp = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Pbgra32);
bmp.Render(uiElement);
encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
using (var stream = new MemoryStream)
{
encoder.Save(stream);
var img = Image.FromStream(stream);
Clipboard.SetImage(img);
}