Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="m"></param>
        public C_旋轉(MainWindow m)
        {
            this.M    = m;
            u_menu_旋轉 = new U_menu(m);

            M.but_旋轉.Click += (sender, e) => {
                u_menu_旋轉.func_open(M.but_旋轉);
            };

            u_menu_旋轉.func_add_menu_icon("順時針 90°", "icon_順時針90", () => {
                func_旋轉_順時針_90();
            });
            u_menu_旋轉.func_add_menu_icon("逆時針 90°", "icon_逆時針90", () => {
                func_旋轉_逆時針_90();
            });

            u_menu_旋轉.func_add_水平線();

            u_menu_旋轉.func_add_menu_icon("水平鏡像", "icon_水平翻轉", () => {
                func_旋轉_水平();
            });
            u_menu_旋轉.func_add_menu_icon("垂直鏡像", "icon_垂直翻轉", () => {
                func_旋轉_垂直();
            });

            u_menu_旋轉.func_add_水平線();

            u_menu_旋轉.func_add_menu_icon("初始化旋轉", "icon_初始化旋轉", () => {
                if (int_旋轉 == 270)
                {
                    int_旋轉 = -90;
                }

                if (int_旋轉 == 360)
                {
                    int_旋轉 = 0;
                }

                fun_旋轉動畫(
                    M.grid_img, int_旋轉, 0,
                    bool_水平鏡像, false,
                    bool_垂直鏡像, false
                    );

                int_旋轉    = 0;
                bool_水平鏡像 = false;
                bool_垂直鏡像 = false;

                // fun_初始化旋轉(0);
            });
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        private void event_複製的選單()
        {
            u_menu_複製.func_add_menu("複製 檔案", null, () => {
                String s_path = M.ar_path[M.int_目前圖片位置];
                //檔案或資料夾存在才複製
                if (File.Exists(s_path) || Directory.Exists(s_path))
                {
                    var f = new System.Collections.Specialized.StringCollection();
                    f.Add(s_path);
                    Clipboard.SetFileDropList(f);
                }
            });



            u_menu_複製.func_add_menu("複製 檔名", null, () => {
                String s_path = M.ar_path[M.int_目前圖片位置];
                s_path        = s_path.Substring(s_path.LastIndexOf("\\") + 1);
                try {
                    System.Windows.Forms.Clipboard.SetDataObject(
                        s_path, //text to store in clipboard
                        false,  //do not keep after our app exits
                        5,      //retry 5 times
                        200);   //200ms delay between retries
                } catch { }
            });
            u_menu_複製.func_add_menu("複製 完整路徑", null, () => {
                String s_path = M.ar_path[M.int_目前圖片位置];
                try {
                    System.Windows.Forms.Clipboard.SetDataObject(
                        s_path, //text to store in clipboard
                        false,  //do not keep after our app exits
                        5,      //retry 5 times
                        200);   //200ms delay between retries
                } catch { }
            });


            u_menu_複製.func_add_水平線();

            propertyMenu_複製_影像 = u_menu_複製.func_add_menu("複製 影像", null, () => {
                try {
                    fun_複製影像();
                } catch (Exception e2) {
                    MessageBox.Show(e2.ToString());
                }
            });



            propertyMenu_複製_png = u_menu_複製.func_add_menu("複製 PNG (低相容)", null, () => {
                String s_當前目錄 = M.ar_path[M.int_目前圖片位置];
                if (File.Exists(s_當前目錄))
                {
                    try {
                        System.Drawing.Bitmap bm_transparent = null;
                        MemoryStream ms = new MemoryStream();


                        if (M.stackPlanel_動圖工具.Visibility == Visibility.Visible)  //如果是動圖,就直接抓目前幀的圖片來處理

                        {
                            BitmapEncoder enc = new PngBitmapEncoder();
                            enc.Frames.Add(BitmapFrame.Create(M.c_P網.fun_取得目前圖片()));
                            enc.Save(ms);
                        }
                        else
                        {
                            String s_附檔名 = M.s_img_type_附檔名;

                            if (s_附檔名 == "PSD" || s_附檔名 == "AI" || s_附檔名 == "PDF" || s_附檔名 == "WEBP")
                            {
                                using (var mi = M.c_影像.c_Magick.getImg(s_當前目錄, s_附檔名)) {
                                    bm_transparent = mi.ToBitmap();
                                }
                            }
                            else if (s_附檔名 == "EXE" || s_附檔名 == "LNK")
                            {
                                bm_transparent = M.c_影像.BitmapFromSource(M.c_P網.fun_取得exe圖示(s_當前目錄, s_附檔名));
                            }
                            else
                            {
                                bm_transparent = new System.Drawing.Bitmap(s_當前目錄);
                            }

                            bm_transparent.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                        }


                        System.Windows.Forms.Clipboard.Clear();//先清理剪貼簿


                        System.Windows.Forms.IDataObject data_object = new System.Windows.Forms.DataObject();
                        data_object.SetData("PNG", false, ms);
                        System.Windows.Forms.Clipboard.SetDataObject(data_object, false);
                    } catch (Exception e2) {
                        MessageBox.Show(e2.ToString());
                    }
                }
            });



            propertyMenu_複製_svg = propertyMenu_複製_影像 = u_menu_複製.func_add_menu("複製 SVG (文字)", null, () => {
                String s_當前目錄 = M.ar_path[M.int_目前圖片位置];
                try {
                    if (File.Exists(s_當前目錄))
                    {
                        using (StreamReader sr = new StreamReader(s_當前目錄, Encoding.UTF8)) {
                            System.Windows.Forms.Clipboard.SetDataObject(sr.ReadToEnd(), false, 5, 200);
                        }
                    }
                } catch (Exception e2) {
                    MessageBox.Show(e2.ToString());
                }
            });



            propertyMenu_複製_影像 = u_menu_複製.func_add_menu("複製 base64", null, () => {
                func_複製_base64();
            });
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        private void event_其他程式啟動_選單(List <data_開啟程式> ar)
        {
            M.but_用外部程式開啟.Click += (sender, e) => {
                u_menu_用外部程式開啟.func_open(M.but_用外部程式開啟);
            };



            u_menu_用外部程式開啟.func_add_menu("檔案右鍵選單", null, () => {
                fun_顯示原生右鍵選單(false);
            });

            u_menu_用外部程式開啟.func_add_menu("開啟檔案位置", null, () => {
                M.fun_用檔案總管開啟目前圖片();
            });

            u_menu_用外部程式開啟.func_add_menu("列印", null, () => {
                try {
                    var pr = new System.Diagnostics.Process();
                    pr.StartInfo.FileName       = M.ar_path[M.int_目前圖片位置];//文件全稱-包括文件後綴
                    pr.StartInfo.CreateNoWindow = true;
                    pr.StartInfo.WindowStyle    = System.Diagnostics.ProcessWindowStyle.Hidden;
                    pr.StartInfo.Verb           = "Print";
                    pr.Start();
                } catch (Exception e2) {
                    MessageBox.Show("找不到對應開啟的程式:\n" + e2.ToString(), "列印失敗");
                }
            });

            u_menu_用外部程式開啟.func_add_menu("設成桌布", null, () => {
                if (File.Exists(M.ar_path[M.int_目前圖片位置]))   //判別檔案是否存在於對應的路徑
                {
                    try {
                        SystemParametersInfo(20, 1, M.ar_path[M.int_目前圖片位置], 0x1 | 0x2);  //存在成立,修改桌布  (uActuin 20 參數為修改wallpaper
                    } catch (Exception e2) {
                        MessageBox.Show("設定桌布失敗:\n" + e2.ToString(), "失敗");
                    }
                }
            });

            u_menu_用外部程式開啟.func_add_menu("選擇其他程式", null, () => {
                if (File.Exists(M.ar_path[M.int_目前圖片位置]))   //判別檔案是否存在於對應的路徑
                {
                    try {
                        String _path = M.ar_path[M.int_目前圖片位置];
                        Process.Start(new ProcessStartInfo("rundll32.exe")
                        {
                            Arguments        = $"shell32.dll,OpenAs_RunDLL {_path}",
                            WorkingDirectory = Path.GetDirectoryName(_path)
                        });
                    } catch (Exception e2) {
                        MessageBox.Show(e2.ToString(), "Error");
                    }
                }
            });



            u_menu_用外部程式開啟.func_add_水平線();



            //使用者自定的名單
            for (int i = 0; i < ar.Count; i++)
            {
                int          xx  = i;
                BitmapSource img = null;
                try {
                    img = M.c_影像.BitmapToBitmapSource(ar[i].img);
                } catch { }

                u_menu_用外部程式開啟.func_add_menu(ar[i].name, img, () => {
                    try {
                        System.Diagnostics.Process.Start(ar[xx].path, "\"" + M.ar_path[M.int_目前圖片位置] + "\"");
                    } catch (Exception e2) {
                        MessageBox.Show(e2.ToString());
                    }
                });
            }//for
        }