115 lines
2.8 KiB
C#
115 lines
2.8 KiB
C#
using System;
|
||
using System.CodeDom.Compiler;
|
||
using System.ComponentModel;
|
||
using System.Diagnostics;
|
||
using System.IO;
|
||
using System.Windows;
|
||
using System.Windows.Controls;
|
||
using System.Windows.Controls.Primitives;
|
||
using System.Windows.Input;
|
||
using System.Windows.Markup;
|
||
using System.Windows.Media.Imaging;
|
||
using Wpf.Ui.Controls;
|
||
|
||
namespace Crysome.Server.View;
|
||
|
||
public class ScreenshotViewerWindow : FluentWindow, IComponentConnector
|
||
{
|
||
internal TextBlock TitleText;
|
||
|
||
internal Button CloseBtn;
|
||
|
||
internal Image ScreenshotImage;
|
||
|
||
internal TextBlock StatusText;
|
||
|
||
private bool _contentLoaded;
|
||
|
||
public ScreenshotViewerWindow(string title, byte[] imageData)
|
||
{
|
||
InitializeComponent();
|
||
((Window)this).Title = title ?? "Screenshot";
|
||
TitleText.Text = title ?? "Screenshot";
|
||
if (imageData != null && imageData.Length != 0)
|
||
{
|
||
try
|
||
{
|
||
BitmapImage bitmapImage = new BitmapImage();
|
||
bitmapImage.BeginInit();
|
||
bitmapImage.StreamSource = new MemoryStream(imageData);
|
||
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
|
||
bitmapImage.EndInit();
|
||
((Freezable)bitmapImage).Freeze();
|
||
ScreenshotImage.Source = bitmapImage;
|
||
StatusText.Text = $"{bitmapImage.PixelWidth} × {bitmapImage.PixelHeight}";
|
||
return;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
StatusText.Text = "Failed to load image: " + ex.Message;
|
||
return;
|
||
}
|
||
}
|
||
StatusText.Text = "No image data received.";
|
||
}
|
||
|
||
private void CloseBtn_Click(object sender, RoutedEventArgs e)
|
||
{
|
||
((Window)this).Close();
|
||
}
|
||
|
||
private void Header_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
((Window)this).DragMove();
|
||
}
|
||
catch
|
||
{
|
||
}
|
||
}
|
||
|
||
[DebuggerNonUserCode]
|
||
[GeneratedCode("PresentationBuildTasks", "9.0.14.0")]
|
||
public void InitializeComponent()
|
||
{
|
||
if (!_contentLoaded)
|
||
{
|
||
_contentLoaded = true;
|
||
Uri resourceLocator = new Uri("/Crysome.Server;component/view/screenshotviewerwindow.xaml", UriKind.Relative);
|
||
Application.LoadComponent(this, resourceLocator);
|
||
}
|
||
}
|
||
|
||
[DebuggerNonUserCode]
|
||
[GeneratedCode("PresentationBuildTasks", "9.0.14.0")]
|
||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||
void IComponentConnector.Connect(int connectionId, object target)
|
||
{
|
||
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
|
||
//IL_004f: Expected O, but got Unknown
|
||
switch (connectionId)
|
||
{
|
||
case 1:
|
||
((Border)target).MouseLeftButtonDown += Header_MouseLeftButtonDown;
|
||
break;
|
||
case 2:
|
||
TitleText = (TextBlock)target;
|
||
break;
|
||
case 3:
|
||
CloseBtn = (Button)target;
|
||
((ButtonBase)(object)CloseBtn).Click += CloseBtn_Click;
|
||
break;
|
||
case 4:
|
||
ScreenshotImage = (Image)target;
|
||
break;
|
||
case 5:
|
||
StatusText = (TextBlock)target;
|
||
break;
|
||
default:
|
||
_contentLoaded = true;
|
||
break;
|
||
}
|
||
}
|
||
}
|