public MainForm() { SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.Opaque, true); WindowState = FormWindowState.Maximized; FormBorderStyle = FormBorderStyle.None; Click += new EventHandler(MainForm_Click); FormClosing += new FormClosingEventHandler(MainForm_FormClosing); Cursor.Hide(); if (Environment.ProcessorCount == 1) { XDevice = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, new PresentParameters() { SwapEffect = SwapEffect.Discard, Windowed = true }); } else { XDevice = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing | CreateFlags.MultiThreaded, new PresentParameters() { SwapEffect = SwapEffect.Discard, Windowed = true }); } XDevice.RenderState.Lighting = false; XDevice.RenderState.AlphaBlendEnable = true; XDevice.RenderState.SourceBlend = Microsoft.DirectX.Direct3D.Blend.SourceAlpha; XDevice.RenderState.DestinationBlend = Microsoft.DirectX.Direct3D.Blend.InvSourceAlpha; XDevice.SamplerState[0].MinFilter = TextureFilter.Anisotropic; XDevice.SamplerState[0].MagFilter = TextureFilter.Anisotropic; XRandom = new Random(); XTimer = new Timer(); XTimer.Interval = 1000 / Settings.Default.FPS; XTimer.Tick += new EventHandler(XTimer_Tick); XTimer.Start(); XSprite = new Sprite(XDevice); Bitmap B = new Bitmap(1, 1); B.SetPixel(0, 0, Color.White); FadeTexture = new Texture(XDevice, B, Usage.None, Pool.Managed); FadeColor = Color.FromArgb(10, Color.Black); FadeTimer = new Timer(); FadeTimer.Interval = Settings.Default.FadeOutInterval * 1000; FadeTimer.Tick += new EventHandler(FadeTimer_Tick); FadeTimer.Start(); Particle.Init(XDevice); Particle.AddControlPoints(Settings.Default.ParticleControlCount); Particle.AddParticles(Settings.Default.ParticleCount); IH = new InfoHUD.InfoHUD(XDevice); }
void MainForm_FormClosing(object sender, FormClosingEventArgs e) { Particle.ClearParticles(); IH.Dispose(); IH = null; }