런처 클립보드 이미지 미리보기 창을 추가하고 개발 문서 이력 기록 규칙을 반영\n\n- Phase L2-3로 클립보드 이미지 전용 미리보기 창 ClipboardImagePreviewWindow를 신규 추가\n- 원본 해상도 이미지 표시, Ctrl+휠 및 + / - / 0 / F / Esc 단축키 기반 줌 조작 지원\n- PNG, JPEG, BMP 저장과 클립보드 복사 기능을 미리보기 창에서 바로 수행 가능하도록 구현\n- LauncherWindow에서 # 클립보드 이미지 항목 선택 후 Shift+Enter로 미리보기 창을 여는 흐름 추가\n- 단축키 도움말에 클립보드 이미지 미리보기 동작을 반영\n- 런처 CenterOnScreen을 마우스가 위치한 모니터 기준으로 보정해 다중 디스플레이 표시 위치를 개선\n- AGENTS.md에 README.md, docs/DEVELOPMENT.md 이력 선반영 및 업데이트 날짜/시간 기록 규칙을 추가\n- README.md, docs/DEVELOPMENT.md, docs/LAUNCHER_ROADMAP.md에 v0.7.3 이력과 2026-04-04 10:05 (KST) 업데이트 시각 반영\n- dotnet build 경고 0 / 오류 0, dotnet test 436 통과 확인
Some checks failed
Release Gate / gate (push) Has been cancelled
Some checks failed
Release Gate / gate (push) Has been cancelled
This commit is contained in:
214
src/AxCopilot/Views/ClipboardImagePreviewWindow.xaml
Normal file
214
src/AxCopilot/Views/ClipboardImagePreviewWindow.xaml
Normal file
@@ -0,0 +1,214 @@
|
||||
<Window x:Class="AxCopilot.Views.ClipboardImagePreviewWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Title="클립보드 이미지 미리보기"
|
||||
Width="1080"
|
||||
Height="760"
|
||||
MinWidth="760"
|
||||
MinHeight="560"
|
||||
WindowStyle="None"
|
||||
AllowsTransparency="True"
|
||||
ResizeMode="CanResizeWithGrip"
|
||||
Background="Transparent"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
KeyDown="Window_KeyDown">
|
||||
<Grid Margin="14">
|
||||
<Border CornerRadius="18"
|
||||
Background="{DynamicResource LauncherBackground}"
|
||||
BorderBrush="{DynamicResource BorderColor}"
|
||||
BorderThickness="1">
|
||||
<Border.Effect>
|
||||
<DropShadowEffect BlurRadius="24" ShadowDepth="4" Opacity="0.22" Color="Black"/>
|
||||
</Border.Effect>
|
||||
</Border>
|
||||
|
||||
<Border Background="{DynamicResource LauncherBackground}"
|
||||
CornerRadius="18"
|
||||
ClipToBounds="True">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="56"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="44"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Border Grid.Row="0"
|
||||
CornerRadius="18,18,0,0"
|
||||
Background="{DynamicResource ItemBackground}"
|
||||
BorderBrush="{DynamicResource BorderColor}"
|
||||
BorderThickness="0,0,0,1"
|
||||
MouseLeftButtonDown="TitleBar_MouseLeftButtonDown">
|
||||
<Grid Margin="18,0,12,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
||||
<Border Background="{DynamicResource AccentColor}"
|
||||
CornerRadius="8"
|
||||
Padding="7,4"
|
||||
Margin="0,0,10,0">
|
||||
<TextBlock Text=""
|
||||
FontFamily="Segoe MDL2 Assets"
|
||||
FontSize="14"
|
||||
Foreground="White"/>
|
||||
</Border>
|
||||
<StackPanel>
|
||||
<TextBlock x:Name="TitleText"
|
||||
Text="클립보드 이미지 미리보기"
|
||||
FontSize="14"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{DynamicResource PrimaryText}"/>
|
||||
<TextBlock x:Name="MetaText"
|
||||
Text="원본 이미지"
|
||||
Margin="0,2,0,0"
|
||||
FontSize="11"
|
||||
Foreground="{DynamicResource SecondaryText}"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Grid.Column="1"
|
||||
Orientation="Horizontal"
|
||||
VerticalAlignment="Center">
|
||||
<Border Width="34"
|
||||
Height="34"
|
||||
Margin="0,0,6,0"
|
||||
Background="Transparent"
|
||||
CornerRadius="9"
|
||||
Cursor="Hand"
|
||||
MouseLeftButtonUp="BtnResetZoom_MouseLeftButtonUp">
|
||||
<TextBlock Text="100%"
|
||||
FontSize="10.5"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
<Border Width="34"
|
||||
Height="34"
|
||||
Background="Transparent"
|
||||
CornerRadius="9"
|
||||
Cursor="Hand"
|
||||
MouseLeftButtonUp="BtnClose_MouseLeftButtonUp">
|
||||
<TextBlock Text=""
|
||||
FontFamily="Segoe MDL2 Assets"
|
||||
FontSize="10"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="1"
|
||||
Background="{DynamicResource ItemBackground}"
|
||||
BorderBrush="{DynamicResource BorderColor}"
|
||||
BorderThickness="0,0,0,1"
|
||||
Padding="16,12">
|
||||
<WrapPanel VerticalAlignment="Center" ItemHeight="36">
|
||||
<Button x:Name="BtnCopyImage"
|
||||
Content="클립보드 복사"
|
||||
Margin="0,0,8,8"
|
||||
Padding="12,6"
|
||||
MinWidth="108"
|
||||
Click="BtnCopyImage_Click"/>
|
||||
<Button x:Name="BtnSavePng"
|
||||
Content="PNG 저장"
|
||||
Margin="0,0,8,8"
|
||||
Padding="12,6"
|
||||
MinWidth="96"
|
||||
Click="BtnSavePng_Click"/>
|
||||
<Button x:Name="BtnSaveJpeg"
|
||||
Content="JPEG 저장"
|
||||
Margin="0,0,8,8"
|
||||
Padding="12,6"
|
||||
MinWidth="96"
|
||||
Click="BtnSaveJpeg_Click"/>
|
||||
<Button x:Name="BtnSaveBmp"
|
||||
Content="BMP 저장"
|
||||
Margin="0,0,8,8"
|
||||
Padding="12,6"
|
||||
MinWidth="96"
|
||||
Click="BtnSaveBmp_Click"/>
|
||||
<Button x:Name="BtnZoomIn"
|
||||
Content="확대"
|
||||
Margin="0,0,8,8"
|
||||
Padding="12,6"
|
||||
MinWidth="72"
|
||||
Click="BtnZoomIn_Click"/>
|
||||
<Button x:Name="BtnZoomOut"
|
||||
Content="축소"
|
||||
Margin="0,0,8,8"
|
||||
Padding="12,6"
|
||||
MinWidth="72"
|
||||
Click="BtnZoomOut_Click"/>
|
||||
<Button x:Name="BtnFit"
|
||||
Content="창에 맞춤"
|
||||
Margin="0,0,8,8"
|
||||
Padding="12,6"
|
||||
MinWidth="96"
|
||||
Click="BtnFit_Click"/>
|
||||
</WrapPanel>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="2"
|
||||
Background="{DynamicResource LauncherBackground}">
|
||||
<Grid Margin="14">
|
||||
<Border CornerRadius="16"
|
||||
Background="{DynamicResource ItemBackground}"
|
||||
BorderBrush="{DynamicResource BorderColor}"
|
||||
BorderThickness="1">
|
||||
<ScrollViewer x:Name="ImageScrollViewer"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
PreviewMouseWheel="ImageScrollViewer_PreviewMouseWheel"
|
||||
SizeChanged="ImageScrollViewer_SizeChanged">
|
||||
<Grid x:Name="ImageHost"
|
||||
Background="{DynamicResource LauncherBackground}"
|
||||
Width="{Binding ElementName=ImageScrollViewer, Path=ViewportWidth}"
|
||||
Height="{Binding ElementName=ImageScrollViewer, Path=ViewportHeight}">
|
||||
<Image x:Name="PreviewImage"
|
||||
Stretch="None"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
RenderOptions.BitmapScalingMode="HighQuality">
|
||||
<Image.RenderTransform>
|
||||
<ScaleTransform x:Name="ImageScaleTransform"
|
||||
ScaleX="1"
|
||||
ScaleY="1"/>
|
||||
</Image.RenderTransform>
|
||||
</Image>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="3"
|
||||
Background="{DynamicResource ItemBackground}"
|
||||
BorderBrush="{DynamicResource BorderColor}"
|
||||
BorderThickness="0,1,0,0"
|
||||
Padding="16,0">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock x:Name="StatusText"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="11.5"
|
||||
Foreground="{DynamicResource SecondaryText}"/>
|
||||
<TextBlock Grid.Column="1"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="11"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
Text="Ctrl+휠 확대/축소 · + / - · 0 원본 · F 맞춤 · Esc 닫기"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Window>
|
||||
Reference in New Issue
Block a user