Commit 505d2632 authored by Rabbit's avatar Rabbit
Browse files

修复了剩余时间不刷新的问题

现在可以使用复制到剪切板功能了
parent 1fd7b2b3
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -74,7 +74,15 @@
                    <TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,4,0,0">文本颜色</TextBlock>
                    <hc:ColorPicker x:Name="colorPicker" Margin="0,32,0,0"></hc:ColorPicker>
                </Grid>
                <Button HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,4,0,0">刷新为现在的时间</Button>
                <Grid Margin="0,4,0,0">
                    <TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,4,0,0">进度条颜色</TextBlock>
                    <hc:ColorPicker SelectedBrush="#FF40A3D6" x:Name="colorPicker2" Margin="0,32,0,0"></hc:ColorPicker>
                </Grid>
                <Grid Margin="0,4,0,0">
                    <TextBlock HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,4,0,0">进度条背景</TextBlock>
                    <hc:ColorPicker SelectedBrush="#7F949494" x:Name="colorPicker3" Margin="0,32,0,0"></hc:ColorPicker>
                </Grid>
                <Button HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,4,0,0" Click="Button_Click_4">刷新为现在的时间</Button>
                <Button HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,4,0,0" Click="Button_Click">选择字体(默认微软雅黑)</Button>
                <Button HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,4,0,0" Click="Button_Click_1">重新绘图</Button>
                <RadioButton x:Name="OpenFile" Height="28" Margin="0,4,0,0" HorizontalAlignment="Left" IsChecked="True">保存后打开图片</RadioButton>
@@ -105,7 +113,7 @@
                    <TextBlock Foreground="{Binding SelectedBrush, ElementName=colorPicker}" FontFamily="{Binding Font}" x:Name="timeText" Visibility="{Binding IsChecked, Converter={StaticResource BooleanToVisibilityConverter}, ElementName=checkBox4}">3天7:5:3</TextBlock>
                </Viewbox>
                <Viewbox x:Name="progressVB" Width="2880" Height="86.4" VerticalAlignment="Bottom" Margin="0,0,0,216">
                    <ProgressBar x:Name="progressBar" Height="{Binding ElementName=progressVB,Path=Height}" Width="{Binding ElementName=progressVB,Path=Width}" Style="{DynamicResource BaseStyle}" Foreground="#FF40A3D6" Background="#7FA4A4A4" BorderBrush="#7FA4A4A4" Value="21" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"></ProgressBar>
                    <ProgressBar Foreground="{Binding SelectedBrush, ElementName=colorPicker2}" Background="{Binding SelectedBrush, ElementName=colorPicker3}" FontFamily="{Binding Font}" x:Name="progressBar" Height="{Binding ElementName=progressVB,Path=Height}" Width="{Binding ElementName=progressVB,Path=Width}" Style="{DynamicResource BaseStyle}" Value="21" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" BorderBrush="{x:Null}"></ProgressBar>
                </Viewbox>
                <Viewbox x:Name="progressTextVB" Width="307.2" VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0,0,0,324">
                    <TextBlock Foreground="{Binding SelectedBrush, ElementName=colorPicker}" x:Name="progressText">1.00%</TextBlock>
@@ -119,7 +127,7 @@
        </Viewbox>

        <StackPanel Grid.Column="1" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,4,0" Orientation="Horizontal">
            <Button Margin="0,0,4,0">
            <Button Margin="0,0,4,0" Click="Button_Click_5">
                复制到剪切板
            </Button>
            <Button Click="Button_Click_3">
+45 −5
Original line number Diff line number Diff line
#pragma warning disable CA1
using CountDownList.Controls;
using CountDownList.UI.WindowFrame;
using OpenCvSharp;
using SixLabors.ImageSharp.Formats.Tiff;
using System;
using System.Collections.Generic;
using System.Drawing;
@@ -266,16 +268,52 @@ namespace CountDownList.UI.Window
            }
            else if((bool)OpenFloder.IsChecked)
            {
                System.Diagnostics.Process.Start($@"\explorer.exe", $@"/select,{fileName}.PNG");
                System.Diagnostics.Process.Start($@"explorer.exe", $@"/select,{fileName}.PNG");
            }
        }

        private void Button_Click_4(object sender, RoutedEventArgs e)
        {
            now = DateTime.Now;
        }

        private void Button_Click_5(object sender, RoutedEventArgs e)
        {
            string fileName = $"{AppDomain.CurrentDomain.BaseDirectory}Data\\Shared\\{DateTime.Now.Ticks}";

            GetPicFromControlToPNG(outputImg, fileName);

            CopyFile(fileName + ".PNG");
        }

        /// <summary>
        /// 复制或剪切文件到剪切板,参考文章:https://www.cnblogs.com/xcsn/p/4678364.html
        /// </summary>
        /// <param name="filePath">文件路径数组</param>
        /// <param name="cut">true:剪切;false:复制</param>
        public static void CopyFile(string filePath, bool cut = false)
        {
            if (filePath == null) return;
            CopyFileList(new[] { filePath }, cut);
        }

        public static void CopyFileList(string[] files, bool cut = false)
        {
            if (files == null) return;
            IDataObject data = new DataObject(DataFormats.FileDrop, files);
            MemoryStream memo = new MemoryStream(4);
            byte[] bytes = new byte[] { (byte)(cut ? 2 : 5), 0, 0, 0 };
            memo.Write(bytes, 0, bytes.Length);
            data.SetData("PreferredDropEffect", memo);
            Clipboard.SetDataObject(data, false);
        }

        public void Update()
        {
            if (titleFormat == "")
            {
                //默认标题
                if (ShareTarget.EndTime <= DateTime.Now || ShareTarget.IsCountMode)
                if (ShareTarget.EndTime <= now || ShareTarget.IsCountMode)
                {
                    titleText.Text = ShareTarget.Title + "已经过去";
                }
@@ -299,9 +337,11 @@ namespace CountDownList.UI.Window
                titleText.Text = titleFormat;
            }

            progressBar.Maximum = ShareTarget.EndTime.Second;
            progressBar.Minimum = ShareTarget.StartTime.Second;
            progressBar.Value = now.Second;
            timeText.Text = (ShareTarget.StartTime - now).ToString("dd\\天hh\\:mm\\:ss");
            
            progressBar.Maximum = ShareTarget.EndTime.Ticks;
            progressBar.Minimum = ShareTarget.StartTime.Ticks;
            progressBar.Value = now.Ticks;

            if (ShareTarget.EndTime >= now || overflowMode)
            {