private void Form1_Load(object sender, EventArgs e) { TargetForm = new Form(); TargetForm.Show(); TargetForm.MinimumSize = new Size(300, 300); this.TopMost = true; selectedBGColor = Color.FromArgb(255, 255, 255, 255); targetWidth = TargetForm.ClientSize.Width; targetHeight = TargetForm.ClientSize.Height; TargetForm.SizeChanged += TargetForm_SizeChanged; TargetForm.FormClosing += TargetForm_FormClosing; lock (safetyLock) { ptrClearIMG = Marshal.AllocHGlobal(targetWidth * targetHeight * 4); ptrWorkIMG = Marshal.AllocHGlobal(targetWidth * targetHeight * 4); } SetBackgroundColor(ptrClearIMG, 255, 255, 255, 255); RT = new RenderThread(144); RT.RenderFrame += RT_RenderFrame; //Get DC From HWND TargetDC = GetDC(TargetForm.Handle); BINFO = new BITMAPINFO(); BINFO.bmiHeader.biBitCount = 32; //BITS PER PIXEL BINFO.bmiHeader.biWidth = targetWidth; BINFO.bmiHeader.biHeight = targetHeight; BINFO.bmiHeader.biPlanes = 1; unsafe { BINFO.bmiHeader.biSize = (uint)sizeof(BITMAPINFOHEADER); } FrameRateDisplay.Start(); }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. _spriteBatch = new SpriteBatch(GraphicsDevice); _camera.LoadContent(Content); _frameRateDisplay = new FrameRateDisplay(this, "Fonts/Arial14"); _rs.FillMode = FillMode.WireFrame; _oldKeyboardState = Keyboard.GetState(); _oldMouseState = Mouse.GetState(); }
private async void video_NewFrame(object sender, NewFrameEventArgs eventArgs) { FrameRateDisplay.Invoke(new Action(() => { FrameRateDisplay.Text = (int.Parse(FrameRateDisplay.Text) + 1).ToString(); })); }