예제 #1
0
        internal static void CaptureNow()
        {
            string filename;
            string timestamp;
            string name = "Unknown";
            string path = RazorEnhanced.Settings.General.ReadString("CapPath");
            string type = RazorEnhanced.Settings.General.ReadString("ImageFormat").ToLower();

            if (World.Player != null)
            {
                name = World.Player.Name;
            }
            if (name == null || name.Trim() == "" || name.IndexOfAny(Path.GetInvalidPathChars()) != -1)
            {
                name = "Unknown";
            }

            if (RazorEnhanced.Settings.General.ReadBool("CapTimeStamp"))
            {
                timestamp = String.Format("{0} ({1}) - {2}", name, World.ShardName, DateTime.Now.ToString(@"M/dd/yy - HH:mm:ss"));
            }
            else
            {
                timestamp = "";
            }

            name = String.Format("{0}_{1}", name, DateTime.Now.ToString("M-d_HH.mm"));

            if (!Directory.Exists(path))
            {
                path = Path.GetDirectoryName(Application.ExecutablePath);
                RazorEnhanced.Settings.General.WriteString("CapPath", path);
                Assistant.Engine.MainWindow.ScreenPath.Text = path;
            }


            int count = 0;

            do
            {
                filename = Path.Combine(path, String.Format("{0}{1}.{2}", name, count != 0 ? count.ToString() : "", type));
                count--;                 // cause a - to be put in front of the number
            }while (File.Exists(filename));

            try
            {
                IntPtr hBmp = ClientCommunication.CaptureScreen(RazorEnhanced.Settings.General.ReadBool("CapFullScreen"), timestamp);
                using (Image img = Image.FromHbitmap(hBmp))
                    img.Save(filename, GetFormat(type));
                DeleteObject(hBmp);
            }
            catch
            {
            }

            Engine.MainWindow.ReloadScreenShotsList();
        }
예제 #2
0
파일: AVIRec.cs 프로젝트: uvbs/Razor
        public static bool Record(int fps, double sizeFactor)
        {
            IntPtr hBmp = ClientCommunication.CaptureScreen(false, "");

            using (Bitmap bmp = Bitmap.FromHbitmap(hBmp))
            {
                m_ResX = (int)(bmp.Width * sizeFactor);
                m_ResY = (int)(bmp.Height * sizeFactor);
            }
            DeleteObject(hBmp);

            string filename;
            string name = "Unknown";
            string path = Config.GetString("RecFolder");

            if (World.Player != null)
            {
                name = World.Player.Name;
            }
            if (name == null || name.Trim() == "" || name.IndexOfAny(Path.GetInvalidPathChars()) != -1)
            {
                name = "Unknown";
            }

            name = String.Format("{0}_{1}", name, DateTime.Now.ToString("M-d_HH.mm"));
            Engine.EnsureDirectory(path);
            int count = 0;

            do
            {
                filename = Path.Combine(path, String.Format("{0}{1}.avi", name, count != 0 ? count.ToString() : ""));
                count--;                 // cause a - to be put in front of the number
            }while (File.Exists(filename));

            m_Avi = new AVIFile();
            if (!m_Avi.Open(filename, fps, m_ResX, m_ResY))
            {
                return(false);
            }

            UpdateFlip();

            m_RecTimer = new RecordTimer(fps);
            m_RecTimer.Start();

            return(true);
        }
예제 #3
0
파일: AVIRec.cs 프로젝트: uvbs/Razor
            protected override void OnTick()
            {
                if (!Recording)
                {
                    return;
                }

                StringBuilder sb = new StringBuilder();

                if (m_Avi.FrameCount < 15)
                {
                    if (World.Player != null && World.Player.Name != null)
                    {
                        sb.Append(World.Player.Name);
                        sb.Append(" ");
                    }

                    if (World.ShardName != null && World.ShardName != "")
                    {
                        sb.Append('(');
                        sb.Append(World.ShardName);
                        sb.Append(") ");
                    }

                    if (sb.Length > 0)
                    {
                        sb.Append("- ");
                    }

                    sb.Append(DateTime.Now.ToString(@"M/dd/yy - HH:mm:ss"));
                }

                bool ok = false;

                try
                {
                    IntPtr hBmp = ClientCommunication.CaptureScreen(false, sb.ToString());
                    using (Bitmap bmp = Bitmap.FromHbitmap(hBmp))
                    {
                        if (bmp.Width != m_ResX)
                        {
                            using (Bitmap copy = new Bitmap(bmp, m_ResX, m_ResY))
                            {
                                copy.RotateFlip(m_Flip);
                                ok = m_Avi.AddFrame(copy);
                            }
                        }
                        else
                        {
                            bmp.RotateFlip(m_Flip);
                            ok = m_Avi.AddFrame(bmp);
                        }
                    }
                    DeleteObject(hBmp);
                }
                catch
                {
                    ok = false;
                }

                if (!ok)
                {
                    AVIRec.Stop();
                    throw new Exception("There was an error writing a frame.");
                }
            }
예제 #4
0
        public static void CaptureNow()
        {
            string filename;
            string timestamp;
            string name = "Unknown";
            string path = Config.GetString("CapPath");
            string type = Config.GetString("ImageFormat").ToLower();

            if (World.Player != null)
            {
                name = World.Player.Name;
            }
            if (name == null || name.Trim() == "" || name.IndexOfAny(Path.GetInvalidPathChars()) != -1)
            {
                name = "Unknown";
            }

            if (Config.GetBool("CapTimeStamp"))
            {
                timestamp = String.Format("{0} ({1}) - {2}", name, World.ShardName, Engine.MistedDateTime.ToString(@"M/dd/yy - HH:mm:ss"));
            }
            else
            {
                timestamp = "";
            }

            name = String.Format("{0}_{1}", name, Engine.MistedDateTime.ToString("M-d_HH.mm"));
            try
            {
                Engine.EnsureDirectory(path);
            }
            catch
            {
                try
                {
                    path = Config.GetUserDirectory("ScreenShots");
                    Config.SetProperty("CapPath", path);
                }
                catch
                {
                    path = "";
                }
            }

            int count = 0;

            do
            {
                filename = Path.Combine(path, String.Format("{0}{1}.{2}", name, count != 0 ? count.ToString() : "", type));
                count--;                 // cause a - to be put in front of the number
            }while (File.Exists(filename));

            try
            {
                IntPtr hBmp = ClientCommunication.CaptureScreen(Config.GetBool("CapFullScreen"), timestamp);
                using (Image img = Image.FromHbitmap(hBmp))
                    img.Save(filename, GetFormat(type));
                DeleteObject(hBmp);
            }
            catch
            {
            }

            Engine.MainWindow.ReloadScreenShotsList();
        }