public GraphicsControl(IGL owner) { SetStyle(ControlStyles.Opaque, true); SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); SetStyle(ControlStyles.UserMouse, true); //in case we need it //GLControl.GetType().GetMethod("SetStyle", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(GLControl, new object[] { System.Windows.Forms.ControlStyles.UserMouse, true }); IGC = owner.Internal_CreateGraphicsControl(); Managed = IGC as Control; Managed.Dock = DockStyle.Fill; Controls.Add(Managed); //pass through these events to the form. I tried really hard to find a better way, but there is none. //(dont use HTTRANSPARENT, it isnt portable, I would assume) Managed.MouseDoubleClick += (object sender, MouseEventArgs e) => OnMouseDoubleClick(e); Managed.MouseClick += (object sender, MouseEventArgs e) => OnMouseClick(e); Managed.MouseEnter += (object sender, EventArgs e) => OnMouseEnter(e); Managed.MouseLeave += (object sender, EventArgs e) => OnMouseLeave(e); Managed.MouseMove += (object sender, MouseEventArgs e) => OnMouseMove(e); //the GraphicsControl is occupying all of our area. So we pretty much never get paint events ourselves. //So lets capture its paint event and use it for ourselves (it doesnt know how to do anything, anyway) Managed.Paint += new PaintEventHandler(GraphicsControl_Paint); }
public RenderTargetWrapper( Func <BufferedGraphicsContext> getBufferedGraphicsContext, IGraphicsControl control = null) { _getBufferedGraphicsContext = getBufferedGraphicsContext; Control = control; }
public void RegisterVisual(IGraphicsControl graphicsControl) { this.control = graphicsControl; }