public override void OnDraw(Bitmap target) { RenderArea.Width = Bounds.Width; RenderArea.Height = Bounds.Height; if (RenderArea.Contains(Input.MousePosition)) { target.DrawRectangle(RenderArea.X, RenderArea.Y, Bounds.Width, Bounds.Height, PrimaryColour + 0x090909, true); } else { target.DrawRectangle(RenderArea.X, RenderArea.Y, Bounds.Width, Bounds.Height, PrimaryColour, true); } target.DrawRectangle(RenderArea.X, RenderArea.Y, Bounds.Width, Bounds.Height, SecondaryColour, false); int posX = RenderArea.X + (Bounds.Width / 2); int posY = RenderArea.Y + (Bounds.Height / 2); posX -= ((Content.Length * GL.fontSize) / 2) + 3; posY -= (GL.fontSize / 2); target.DrawString(posX, posY, Content, Theme.ButtonText); }
/// <summary> /// Handle event /// </summary> /// <param name="e"> Event to handle</param> public override void HandleEvent(Event e) { if (e.type == EventType.KeyDown) { if (e.keyCode == KeyCode.F) { if (RenderArea.Contains(e.mousePosition)) { FrameAll(); e.Use(); } } } else if (_IsMouseDown && Parent != null && e != null) { if (e.type == EventType.MouseDrag) { if (e.button == 2) // middle { if (e.modifiers == EventModifiers.Control && e.delta.x != 0) { PanX(e.delta.x); } else if (e.modifiers == EventModifiers.Shift && e.delta.y != 0) { PanY(e.delta.y); } else { if (e.delta.x != 0) { PanX(e.delta.x); } if (e.delta.y != 0) { PanY(e.delta.y); } } e.Use(); } else if (e.alt && e.button == 1) // right { if (e.delta.x != 0) { ZoomX(e.delta.x); } if (e.delta.y != 0) { ZoomY(e.delta.y); } e.Use(); } } else if ((e.type == EventType.MouseUp || e.rawType == EventType.MouseUp) && e.button == _MouseButton) { Frame of = OwnerFrame; if (of != null) { of.UnregisterPrecedenceEvent(this); _IsMouseDown = false; _MouseButton = -1; e.Use(); } } else { base.HandleEvent(e); } } else { base.HandleEvent(e); } }
public override void OnDraw(Bitmap target) { formRendering = this; if (!initialized) { initialized = true; InitializeComponents(); } BeforeRedraw(); if (WindowState == FormWindowState.Minimized) { skipChildren = true; } else if (WindowState == FormWindowState.Normal) { Banner.X = RenderArea.X; Banner.Y = RenderArea.Y - 20; Banner.Width = Bounds.Width; Banner.Height = 20; target.DrawRectangle(Banner.X, Banner.Y, Banner.Width, Banner.Height, Theme.WindowBarPrimary, true); target.DrawRectangle(Banner.X, Banner.Y, Banner.Width, Banner.Height, Theme.WindowShadow, false); target.DrawString(Banner.X + 5, Banner.Y + 6, Content, Theme.WindowBarText); target.DrawRectangle(Bounds.X, Bounds.Y, Bounds.Width, Bounds.Height, PrimaryColour, true); target.DrawRectangle(Bounds.X, Bounds.Y, Bounds.Width, Bounds.Height, SecondaryColour, false); } else if (WindowState == FormWindowState.Maximized) { RenderArea.X = 0; RenderArea.Y = 20; Bounds.X = 0; Bounds.Y = 20; Bounds.Width = target.Width; Bounds.Height = target.Height; Banner.X = 0; Banner.Y = 0; Banner.Width = Bounds.Width; Banner.Height = 20; target.DrawRectangle(Banner.X, Banner.Y, Banner.Width, Banner.Height, Theme.WindowBarPrimary, true); target.DrawRectangle(Banner.X, Banner.Y, Banner.Width, Banner.Height, Theme.WindowShadow, false); target.DrawString(Banner.X + 5, Banner.Y + 6, Content, Theme.WindowBarText); target.DrawRectangle(Bounds.X, Bounds.Y, Bounds.Width, Bounds.Height, PrimaryColour, true); target.DrawRectangle(Bounds.X, Bounds.Y, Bounds.Width, Bounds.Height, SecondaryColour, false); } else if (WindowState == FormWindowState.FullScreen) { RenderArea.X = 0; RenderArea.Y = 0; Bounds.X = 0; Bounds.Y = 0; Bounds.Width = target.Width; Bounds.Height = target.Height; Banner.X = 0; Banner.Y = 0; Banner.Width = Bounds.Width; Banner.Height = 20; target.DrawRectangle(Bounds.X, Bounds.Y, Bounds.Width, Bounds.Height, PrimaryColour, true); } if (BackgroundImage != null) { if (BackgroundImage.Width != Bounds.Width || BackgroundImage.Height != Bounds.Height) { BackgroundImage.ResizeImage(Bounds.Width, Bounds.Height); } target.DrawImage(Bounds.X, Bounds.Y, BackgroundImage); } AfterRedraw(); if (Input.GetMouseButton(0) && (RenderArea.Contains(Input.MousePosition) || Banner.Contains(Input.MousePosition))) { SGI.CurrentForm = this; } }