c# WPF直接在屏幕上显示元素

本文关键字:显示 元素 屏幕 WPF | 更新日期: 2023-09-27 18:11:57

我知道有一种方法可以直接在屏幕上显示"元素"(在我的情况下是一个图像),独立于应用程序。我相信您间接地控制了系统的图形部分。有时你会看到,如果一个服务启动,它是"隐藏"在后台。

我想在屏幕上显示一个图像对象作为几秒钟的预览。

它是如何工作的?

c# WPF直接在屏幕上显示元素

编辑:更新代码

它是如何工作的?

我不认为你所寻找的实际存在(一个现成且易于使用的预览解决方案),但你可以尝试并找到一个解决方案,如果你失败了,你可以随时询问我们的程序员社区。

My project:

主窗口。Xaml:

<Window x:Class="previewOrSmthn.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:previewOrSmthn"
    mc:Ignorable="d"
    Title="MainWindow" Height="300" Width="400">
<Grid>
    <Image x:Name="imgToPreview" HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100" MouseDown="imgToPreview_MouseDown"/>
</Grid></Window>

预览。Xaml:

<Window x:Class="previewOrSmthn.Preview"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:previewOrSmthn"
    mc:Ignorable="d"
    Title="Preview" Height="250" WindowStartupLocation="CenterOwner" Width="250" ResizeMode="NoResize"  WindowStyle="None" ShowInTaskbar="False">
<Grid>
    <Image x:Name="imgPreview" Margin="0"/>
</Grid></Window>

MainWindow.Xaml.cs:

public partial class MainWindow : Window
{
    string Path = "C:/Users/Public/Pictures/Sample Pictures/Lighthouse.jpg";
    Preview prevwnd = new Preview();
    public MainWindow()
    {
        InitializeComponent();
        imgToPreview.Source = new BitmapImage(new Uri(Path));
        prevwnd = new Preview(Path);         
    }
    protected override void OnClosing(CancelEventArgs e)
    {
        Application.Current.Shutdown();
    }
   private void imgToPreview_MouseDown(object sender, MouseButtonEventArgs e)
    {
        if (e.ClickCount == 2)
        {
            prevwnd.Show();
        }
    }
}

Preview.Xaml.cs:

 public partial class Preview : Window
{
    DispatcherTimer ThreeSec = new DispatcherTimer();
    public Preview()
    {
        InitializeComponent();
    }
    public Preview(string imgSource)
    {
        InitializeComponent();
        imgPreview.Source = new BitmapImage(new Uri(imgSource));
        imgPreview.Stretch = Stretch.UniformToFill;
        ThreeSec.Interval = TimeSpan.FromSeconds(3);
        ThreeSec.Tick += ThreeSec_Tick;
        Loaded += Preview_Loaded;
    }
    private void ThreeSec_Tick(object sender, EventArgs e)
    {
        this.Hide();
    }
    private void Preview_Loaded(object sender, RoutedEventArgs e)
    {
        ThreeSec.Start();
    }
}

祝你好运!(就像让它变得更好,比如设置所有者等)我让一切都很容易理解。