c# WPF直接在屏幕上显示元素
本文关键字:显示 元素 屏幕 WPF | 更新日期: 2023-09-27 18:11:57
我知道有一种方法可以直接在屏幕上显示"元素"(在我的情况下是一个图像),独立于应用程序。我相信您间接地控制了系统的图形部分。有时你会看到,如果一个服务启动,它是"隐藏"在后台。
我想在屏幕上显示一个图像对象作为几秒钟的预览。
它是如何工作的?
编辑:更新代码
它是如何工作的?
我不认为你所寻找的实际存在(一个现成且易于使用的预览解决方案),但你可以尝试并找到一个解决方案,如果你失败了,你可以随时询问我们的程序员社区。
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();
}
}
祝你好运!(就像让它变得更好,比如设置所有者等)我让一切都很容易理解。