58 lines
1.8 KiB
C#
58 lines
1.8 KiB
C#
using System.Windows;
|
|
using System.Windows.Media;
|
|
using System.Windows.Threading;
|
|
|
|
namespace AxCopilot.Views;
|
|
|
|
/// <summary>
|
|
/// 스포이드 색상 추출 결과를 반투명 창으로 5초간 표시합니다.
|
|
/// 클릭 위치 근처에 나타나며, HEX 코드를 클립보드에 복사합니다.
|
|
/// </summary>
|
|
public partial class ColorPickResultWindow : Window
|
|
{
|
|
private readonly DispatcherTimer _timer;
|
|
|
|
public ColorPickResultWindow(System.Drawing.Color color, double screenX, double screenY)
|
|
{
|
|
InitializeComponent();
|
|
|
|
// 색상 표시
|
|
var wpfColor = Color.FromRgb(color.R, color.G, color.B);
|
|
ColorPreview.Fill = new SolidColorBrush(wpfColor);
|
|
HexText.Text = $"#{color.R:X2}{color.G:X2}{color.B:X2}";
|
|
RgbText.Text = $"RGB({color.R}, {color.G}, {color.B})";
|
|
|
|
// 클립보드에 HEX 코드 복사
|
|
try { Clipboard.SetText(HexText.Text); }
|
|
catch { }
|
|
|
|
// 위치: 클릭 지점 오른쪽 아래
|
|
var area = SystemParameters.WorkArea;
|
|
Left = Math.Min(screenX + 20, area.Right - 200);
|
|
Top = Math.Min(screenY + 20, area.Bottom - 160);
|
|
|
|
// 5초 타이머
|
|
_timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(5) };
|
|
_timer.Tick += (_, _) => Close();
|
|
_timer.Start();
|
|
|
|
// 클릭으로 닫기
|
|
MouseDown += (_, _) => Close();
|
|
|
|
// 등장 애니메이션
|
|
Opacity = 0;
|
|
Loaded += (_, _) =>
|
|
{
|
|
var anim = new System.Windows.Media.Animation.DoubleAnimation(0, 1,
|
|
TimeSpan.FromMilliseconds(200));
|
|
BeginAnimation(OpacityProperty, anim);
|
|
};
|
|
}
|
|
|
|
protected override void OnClosed(EventArgs e)
|
|
{
|
|
_timer.Stop();
|
|
base.OnClosed(e);
|
|
}
|
|
}
|