【问题标题】:C# WPF show element directly on screenC# WPF 直接在屏幕上显示元素
【发布时间】:2015-12-04 08:07:36
【问题描述】:

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

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

它是如何工作的?

【问题讨论】:

  • 我认为您对闪屏的概念感到困惑,这绝对是应用程序的一部分。
  • 不,我没有。我知道闪屏。我不希望它在应用程序启动时只运行一次。我希望每次点击图片时都能看到它,你会直接在屏幕上看到更大的尺寸。
  • 请完善您想要达到的目标的描述。
  • 你以前在哪里见过这个?
  • 你为什么不创建一个窗口(也许是一个无边框的)并在其中显示你的 preview 图像?

标签: c# wpf image screen preview


【解决方案1】:

编辑:更新代码

它是如何工作的?

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

我的项目:

MainWindow.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>

Preview.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();
    }
}

祝你好运!(就像设置所有者一样让它变得更好......等等)我让一切变得简单易懂。如果您有任何问题,请发表评论。

【讨论】:

    猜你喜欢
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多