protected void _AdjustAspect(bool reverse) { if (_W / (float)_H > CSettings.GetRenderAspect()) { _Y = 0; //The windows width is too big int old = _W; _W = (int)Math.Round(_H * CSettings.GetRenderAspect()); int diff = old - _W; switch (_CurrentAlignment) { case EGeneralAlignment.Start: _X = 0; break; case EGeneralAlignment.Middle: _X = diff / 2; break; case EGeneralAlignment.End: _X = diff; break; } } else { _X = 0; //The windows height is too big int old = _H; _H = (int)Math.Round(_W / CSettings.GetRenderAspect()); int diff = old - _H; switch (_CurrentAlignment) { case EGeneralAlignment.Start: _Y = reverse ? diff : 0; break; case EGeneralAlignment.Middle: _Y = diff / 2; break; case EGeneralAlignment.End: _Y = reverse ? 0 : diff; break; } } }
private void _DrawBuffer() { Graphics frontBuffer = Graphics.FromHwnd(Handle); int h = ClientSize.Height; int w = ClientSize.Width; int y = 0; int x = 0; if (ClientSize.Width / (float)ClientSize.Height > CSettings.GetRenderAspect()) { w = (int)Math.Round(ClientSize.Height * CSettings.GetRenderAspect()); x = (ClientSize.Width - w) / 2; } else { h = (int)Math.Round(ClientSize.Width / CSettings.GetRenderAspect()); y = (ClientSize.Height - h) / 2; } frontBuffer.DrawImage(_Backbuffer, new Rectangle(x, y, w, h), new Rectangle(0, 0, _Backbuffer.Width, _Backbuffer.Height), GraphicsUnit.Pixel); }