private void bufferedPanel1_Paint(object sender, PaintEventArgs e) { _state.ScrollOffsetX = -(bufferedPanel1.AutoScrollPosition.X / _state.ScaleFactor) * _state.ScaleFactor; _state.ScrollOffsetY = -(bufferedPanel1.AutoScrollPosition.Y / _state.ScaleFactor) * _state.ScaleFactor; int scaleFactor = _state.ScaleFactor; if ((_room.Resolution == RoomResolution.LowRes) && (Factory.AGSEditor.CurrentGame.IsHighResolution)) { // low-res room in high-res game, scale up since object // co-ordinates will be high-res scaleFactor *= 2; } int backgroundNumber = cmbBackgrounds.SelectedIndex; if (backgroundNumber < _room.BackgroundCount) { e.Graphics.SetClip(new Rectangle(0, 0, _room.Width * _state.ScaleFactor, _room.Height * _state.ScaleFactor)); IntPtr hdc = e.Graphics.GetHdc(); Factory.NativeProxy.CreateBuffer(bufferedPanel1.ClientSize.Width, bufferedPanel1.ClientSize.Height); // Adjust co-ordinates using original scale factor so that it lines // up with objects, etc int drawOffsX = -(_state.ScrollOffsetX / _state.ScaleFactor) * _state.ScaleFactor; int drawOffsY = -(_state.ScrollOffsetY / _state.ScaleFactor) * _state.ScaleFactor; lock (_room) { Factory.NativeProxy.DrawRoomBackground(hdc, _room, drawOffsX, drawOffsY, backgroundNumber, scaleFactor, _filter.MaskToDraw, _filter.SelectedArea, sldTransparency.Value); } _filter.PaintToHDC(hdc, _state); Factory.NativeProxy.RenderBufferToHDC(hdc); e.Graphics.ReleaseHdc(hdc); _filter.Paint(e.Graphics, _state); } }