借助网络配置,控制Modbus工具的日志显示,避免卡死界面
智能大石头 authored at 2021-12-11 22:09:19
9.03 KiB
XCoder
<Window x:Class="CrazyCoder.Views.IconToolWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="图标水印处理工具" Height="750" Width="1100" WindowStartupLocation="CenterScreen">
    <Window.Resources>
        <Style x:Key="GroupBorder" TargetType="Border">
            <Setter Property="BorderBrush" Value="#D0D0D0"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="Margin" Value="0,0,0,6"/>
        </Style>

        <Style x:Key="SectionTitle" TargetType="TextBlock">
            <Setter Property="FontWeight" Value="Bold"/>
            <Setter Property="Margin" Value="4,3"/>
            <Setter Property="FontSize" Value="13"/>
        </Style>

        <Style x:Key="ConfigLabel" TargetType="TextBlock">
            <Setter Property="VerticalAlignment" Value="Center"/>
            <Setter Property="Margin" Value="4,2"/>
        </Style>

        <Style x:Key="ConfigTextBox" TargetType="TextBox">
            <Setter Property="Margin" Value="2"/>
            <Setter Property="Height" Value="26"/>
            <Setter Property="VerticalContentAlignment" Value="Center"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="BorderBrush" Value="#D0D0D0"/>
        </Style>

        <Style x:Key="SmallNumeric" TargetType="TextBox">
            <Setter Property="Width" Value="70"/>
            <Setter Property="Height" Value="26"/>
            <Setter Property="VerticalContentAlignment" Value="Center"/>
            <Setter Property="HorizontalContentAlignment" Value="Right"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="BorderBrush" Value="#D0D0D0"/>
            <Setter Property="Margin" Value="2"/>
        </Style>

        <Style x:Key="ActionButton" TargetType="Button">
            <Setter Property="Height" Value="30"/>
            <Setter Property="Margin" Value="2"/>
            <Setter Property="Padding" Value="8,0"/>
        </Style>
    </Window.Resources>

    <Grid Margin="6">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="260"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <!-- ============ 左侧:配置面板 ============ -->
        <ScrollViewer Grid.Column="0" VerticalScrollBarVisibility="Auto" Margin="0,0,4,0">
            <StackPanel>
                <!-- 图片加载 -->
                <Border Style="{StaticResource GroupBorder}">
                    <StackPanel>
                        <TextBlock Text="图片加载" Style="{StaticResource SectionTitle}"/>
                        <Button Content="选择图片" Command="{Binding LoadImageCommand}"
                                Style="{StaticResource ActionButton}" Margin="4,2"/>
                        <TextBlock Text="提示:支持拖放图片到右侧预览区" Margin="4,0,4,4"
                                   Foreground="Gray" FontSize="11"/>
                    </StackPanel>
                </Border>

                <!-- 水印设置 -->
                <Border Style="{StaticResource GroupBorder}">
                    <StackPanel>
                        <TextBlock Text="水印设置" Style="{StaticResource SectionTitle}"/>

                        <TextBlock Text="文字内容" Style="{StaticResource ConfigLabel}"/>
                        <TextBox Text="{Binding WatermarkText, UpdateSourceTrigger=PropertyChanged}"
                                 Style="{StaticResource ConfigTextBox}"/>

                        <Grid Margin="4,2">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="Auto"/>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>

                            <TextBlock Grid.Row="0" Grid.Column="0" Text="字体" Style="{StaticResource ConfigLabel}" Width="40"/>
                            <ComboBox Grid.Row="0" Grid.Column="1" ItemsSource="{Binding FontNames}"
                                      Text="{Binding FontName, UpdateSourceTrigger=PropertyChanged}"
                                      Height="26" Margin="2" IsEditable="True"/>

                            <TextBlock Grid.Row="1" Grid.Column="0" Text="字号" Style="{StaticResource ConfigLabel}" Width="40"/>
                            <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding FontSize, UpdateSourceTrigger=PropertyChanged}"
                                     Style="{StaticResource SmallNumeric}"/>
                        </Grid>

                        <Grid Margin="4,2">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="Auto"/>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>

                            <TextBlock Grid.Row="0" Grid.Column="0" Text="X" Style="{StaticResource ConfigLabel}" Width="20"/>
                            <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding WatermarkX, UpdateSourceTrigger=PropertyChanged}"
                                     Style="{StaticResource SmallNumeric}" Width="Auto"/>
                            <TextBlock Grid.Row="0" Grid.Column="2" Text="Y" Style="{StaticResource ConfigLabel}" Width="20" Margin="4,2,2,2"/>
                            <TextBox Grid.Row="0" Grid.Column="3" Text="{Binding WatermarkY, UpdateSourceTrigger=PropertyChanged}"
                                     Style="{StaticResource SmallNumeric}" Width="Auto"/>

                            <TextBlock Grid.Row="1" Grid.Column="0" Text="颜色" Style="{StaticResource ConfigLabel}" Width="40"/>
                            <TextBox Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3"
                                     Text="{Binding WatermarkColor, UpdateSourceTrigger=PropertyChanged}"
                                     Style="{StaticResource ConfigTextBox}"/>
                        </Grid>

                        <Button Content="应用水印" Command="{Binding MakeWaterCommand}"
                                Style="{StaticResource ActionButton}" Margin="4,2"/>
                    </StackPanel>
                </Border>

                <!-- ICO 图标生成 -->
                <Border Style="{StaticResource GroupBorder}">
                    <StackPanel>
                        <TextBlock Text="ICO 图标生成" Style="{StaticResource SectionTitle}"/>

                        <ItemsControl ItemsSource="{Binding IconSizes}" Margin="4,2">
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <CheckBox Content="{Binding Name}" IsChecked="{Binding IsSelected}" Margin="2"/>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>

                        <Button Content="生成 ICO 图标" Command="{Binding MakeIcoCommand}"
                                Style="{StaticResource ActionButton}" Margin="4,2" FontWeight="Bold"/>
                        <Button Content="保存图片" Command="{Binding SaveImageCommand}"
                                Style="{StaticResource ActionButton}" Margin="4,2"/>
                    </StackPanel>
                </Border>
            </StackPanel>
        </ScrollViewer>

        <!-- ============ 右侧:图片预览 ============ -->
        <Border Grid.Column="1" BorderBrush="#D0D0D0" BorderThickness="1" AllowDrop="True"
                x:Name="previewBorder">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>

                <TextBlock Text="图片预览" Style="{StaticResource SectionTitle}"/>

                <ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
                    <Image x:Name="previewImage" Source="{Binding PreviewImage}"
                           Stretch="None" Margin="4"
                           AllowDrop="True"
                           Drop="OnImageDrop"
                           DragOver="OnImageDragOver"/>
                </ScrollViewer>
            </Grid>
        </Border>
    </Grid>
</Window>