示例#1
0
 // 外部プログラムで画像を開く
 private void Toolbar_OpenByExternalApp_Click(object sender, RoutedEventArgs e)
 {
     if (MainWindow.Setting.ExternalAppInfoList.Count > 0)
     {
         TargetImgFileContext.OpenByExternalApp(MainWindow.Setting.ExternalAppInfoList[0]);
     }
     else
     {
         TargetImgFileContext.OpenByExternalApp(new ExternalAppInfo());
     }
 }
示例#2
0
        // クリップボードへコピー
        private void MenuItem_Copy_SubmenuOpened(object sender, RoutedEventArgs e)
        {
            MenuItem_Copy.Items.Clear();

            // ファイル
            MenuItem mi_file = new MenuItem();

            mi_file.Header  = "ファイル";
            mi_file.ToolTip = "コピー後、エクスプローラーで貼り付けが出来ます";
            mi_file.Click  += (s, ev) => { TargetImgFileContext.CopyFile(); };
            MenuItem_Copy.Items.Add(mi_file);

            // 画像データ
            MenuItem mi_image = new MenuItem();

            mi_image.Header  = "画像データ";
            mi_image.ToolTip = "コピー後、ペイント等の画像編集ソフトへ貼り付けが出来ます";
            mi_image.Click  += (s, ev) => { var t = TargetImgFileContext.CopyImageData(); };
            MenuItem_Copy.Items.Add(mi_image);

            // ファイルパス
            string filePath;

            if (TargetImgFileContext.Archiver.CanReadFile)
            {
                filePath = TargetImgFileContext.FilePath;
            }
            else
            {
                filePath = TargetImgFileContext.Archiver.ArchiverPath;
            }
            MenuItem mi_filePath = new MenuItem();

            mi_filePath.Header  = "ファイルパス";
            mi_filePath.ToolTip = filePath;
            mi_filePath.Click  += (s, ev) => { TargetImgFileContext.CopyFilePath(); };
            MenuItem_Copy.Items.Add(mi_filePath);

            // ファイル名
            MenuItem mi_fileName = new MenuItem();

            mi_fileName.Header  = "ファイル名";
            mi_fileName.ToolTip = Path.GetFileName(TargetImgFileContext.FilePath);
            mi_fileName.Click  += (s, ev) => { TargetImgFileContext.CopyFileName(); };
            MenuItem_Copy.Items.Add(mi_fileName);
        }
示例#3
0
 // エクスプローラーで開く
 private void Toolbar_OpenExplorer_Click(object sender, RoutedEventArgs e)
 {
     TargetImgFileContext.OpenByExplorer();
 }
示例#4
0
        private void UpdateFileInfoText()
        {
            // 初期化
            FileInfoGrid.Width  = double.NaN;
            FileInfoGrid.Height = double.NaN;
            string newText = "";

            try
            {
                ImageFileInfo ifi = TargetImgFileContext.Info;

                // ファイルサイズ取得
                long length = 0;
                if (ifi.Length != 0)
                {
                    length = ifi.Length;
                }
                else if (TargetImgFileContext.Archiver.CanReadFile)
                {
                    FileInfo fi = new FileInfo(TargetImgFileContext.FilePath);
                    length = fi.Length;
                }

                // 更新日時取得
                if (ifi.LastWriteTime == null)
                {
                    TargetImgFileContext.ReadLastWriteTime();
                }

                // ファイル名(ページ番号)
                if (TargetImgFileContext.Archiver is PdfArchiver)
                {
                    newText += "ページ番号: " + TargetImgFileContext.FilePath + "\n";
                }
                else
                {
                    newText += "ファイル名: " + Path.GetFileName(TargetImgFileContext.FilePath) + "\n";
                }

                // 画像サイズ
                if (length != 0)
                {
                    newText += "画像サイズ: " + length / 1024 + "KB\n";
                }

                // 更新日時
                if (ifi.LastWriteTime != null)
                {
                    newText += "更新日時: " + ifi.LastWriteTime.Value.DateTime + "\n";
                }

                // 撮影日時
                if (ifi.ExifInfo != null && ifi.ExifInfo.DateTaken != null)
                {
                    newText += "撮影日時: " + ifi.ExifInfo.DateTaken.Value.DateTime + "\n";
                }

                // ピクセル数
                Size pixelSize = ifi.PixelSize.Round();
                newText += "ピクセル数: " + pixelSize.Width + "x" + pixelSize.Height;

                // ツールチップでファイルパス表示
                if (TargetImgFileContext.Archiver.CanReadFile)
                {
                    FileInfoGrid.ToolTip = TargetImgFileContext.FilePath;
                }
                else
                {
                    FileInfoGrid.ToolTip = TargetImgFileContext.Archiver.ArchiverPath + "/" + TargetImgFileContext.FilePath;
                }
                ToolTipService.SetShowDuration(FileInfoGrid, 1000000);
            }
            catch
            {
                newText = "ファイル情報の取得失敗";
            }
            finally
            {
                FileInfoTextBlock.Text = newText;

                // FileInfoGridのサイズをFileInfoTextBlockに合わせる
                FileInfoTextBlock.Dispatcher.BeginInvoke(
                    new Action(() =>
                {
                    FileInfoGrid.Width  = FileInfoTextBlock.RenderSize.Width;
                    FileInfoGrid.Height = FileInfoTextBlock.RenderSize.Height;
                }),
                    System.Windows.Threading.DispatcherPriority.Loaded
                    );
            }
        }
示例#5
0
        private async Task LoadImage()
        {
            // すでに実行中ならキャンセル
            cts_ForLoadImage?.Cancel();

            // キャンセルトークン作成
            var cts = new CancellationTokenSource();

            cts_ForLoadImage = cts;

            await semaphoreSlim_ForLoadImage.WaitAsync();

            try
            {
                // キャンセルされた
                if (cts.Token.IsCancellationRequested)
                {
                    return;
                }

                ImageFileInfo fi = TargetImgFileContext.Info;

                // gif拡大時
                if (TargetImgFileContext.Archiver.CanReadFile && Path.GetExtension(TargetImgFileContext.FilePath).ToLower() == ".gif")
                {
                    var source = new BitmapImage();
                    source.BeginInit();
                    source.CacheOption   = BitmapCacheOption.OnLoad;
                    source.CreateOptions = BitmapCreateOptions.None;
                    source.UriSource     = new Uri(TargetImgFileContext.FilePath);
                    ImageBehavior.SetAnimatedSource(ExpandedImage, source);
                    if (cts.Token.IsCancellationRequested)
                    {
                        return;
                    }
                    ExpandedImage.Source = source;
                    source.EndInit();
                    source.Freeze();
                }
                else
                {
                    ImageBehavior.SetAnimatedSource(ExpandedImage, null);
                    int pixel = MainWindow.Setting.TempProfile.BitmapDecodeTotalPixel.Value;

                    // ウインドウサイズに合わせたBitmapをロード
                    //double p = MainWindow.MainContent.LayoutTransform.Value.M11;
                    //Size winSize = new Size(MainWindow.ImgContainerManager.ContainerWidth * p, MainWindow.ImgContainerManager.ContainerHeight * p);
                    //if(winSize.Width < fi.PixelSize.Width && winSize.Height < fi.PixelSize.Height ) // 本来の画像サイズがウインドウサイズより大きい時のみロード
                    //{
                    //    var bitmap = await TargetImgFileContext.LoadBitmap(winSize);
                    //    if( cts.Token.IsCancellationRequested ) return;
                    //    this.ExpandedImage.Source = bitmap;
                    //}

                    // 本来のサイズでBitmapをロード
                    var trueBitmap = await TargetImgFileContext.LoadBitmap(Size.Empty);

                    if (cts.Token.IsCancellationRequested)
                    {
                        return;
                    }
                    this.ExpandedImage.Source = trueBitmap;
                }
            }
            finally { semaphoreSlim_ForLoadImage.Release(); }
        }