private void createRenderPanel() { if (renderItem != null) { renderItem.Close(); } renderItem = new TabItemWithClose(); renderItem.Width = 150; renderItem.Height = 20; renderItem.FontSize = 13; renderItem.Header = "编辑器"; renderItem.HorizontalAlignment = HorizontalAlignment.Stretch; renderItem.VerticalAlignment = VerticalAlignment.Stretch; RenderPanel rp = new RenderPanel(); rp.RenderLoaded += Rp_Loaded; rp._MouseButtonDown += Rp__MouseLeftButtonDown; rp._MouseButtonUp += Rp__MouseLeftButtonUp; rp._MouseMove += Rp__MouseMove; rp._KeyDown += Rp__KeyDown; rp._KeyUp += Rp__KeyUp; rp._SizeChange += Rp__SizeChange; renderItem.Content = rp; mainWnd.renderPanel.Items.Add(renderItem); mainWnd.renderPanel.SelectedItem = renderItem; }
private void gamePanel_SizeChange(object sender, EventArgs e) { RenderPanel rp = gameItem.Content as RenderPanel; // 在Resize事件中更新目标应用程序的窗体尺寸. Win32.SetWindowPos(windowsPlayerHandle, IntPtr.Zero, 0, 0, (int)rp.ActualWidth, (int)rp.ActualHeight, Win32.SWP_NOZORDER); }
private void createGameWindow() { RenderPanel rp = null; if (gameItem != null) { rp = gameItem.Content as RenderPanel; } else { gameItem = new TabItemWithClose(); gameItem.Header = "Game"; gameItem.Width = 150; gameItem.Height = 20; gameItem.Closed += GameItem_Closed; rp = new RenderPanel(); rp._SizeChange += gamePanel_SizeChange; rp.Loaded += gamePanel_Loaded; gameItem.Content = rp; } mainWnd.renderPanel.Items.Add(gameItem); mainWnd.renderPanel.SelectedItem = gameItem; Win32.SetParent(windowsPlayerHandle, rp.Handle); Int32 wndStyle = Win32.GetWindowLong(windowsPlayerHandle, Win32.GWL_STYLE); wndStyle &= ~Win32.WS_BORDER; wndStyle &= ~Win32.WS_THICKFRAME; Win32.SetWindowLong(windowsPlayerHandle, Win32.GWL_STYLE, wndStyle); Win32.SetWindowPos(windowsPlayerHandle, IntPtr.Zero, 0, 0, 0, 0, Win32.SWP_NOMOVE | Win32.SWP_NOSIZE | Win32.SWP_NOZORDER | Win32.SWP_FRAMECHANGED); }
private void rewBtn_Click(object sender, EventArgs e) { CurrentRow = 0; serialResponseList.Items.Clear(); sentRowsLbl.Text = "Sent rows: 0"; mViewDevice.CurrentCodeLineIndex = 0; SetupJob(); RenderPanel.Invalidate(); }
private void Rp__SizeChange(object sender, EventArgs e) { if (!EngineLoaded) { return; } RenderPanel rp = sender as RenderPanel; RenderDelegate.ChageFrameSize((int)rp.ActualWidth, (int)rp.ActualHeight); }
private void ProcessFile(string file) { if (file == null) { return; } if (!File.Exists(file)) { MessageBox.Show("File not found: " + file); return; } try { StreamReader reader = new StreamReader(file); string line; SetLoading(true); mViewDevice.Clear(); while ((line = reader.ReadLine()) != null) { GCodeParser.ParseLine(line); } SetLoading(false); reader.Close(); ZoomTextbox.Text = mViewDevice.VisualScale.ToString(); SetupJob(); RenderPanel.Invalidate(); FileNameLabel.Text = Path.GetFileName(file); GetConfig().SetString("last.open.file", file); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void DrawScene() { using (var bmp = new Bitmap(RenderPanel.ClientSize.Width, RenderPanel.ClientSize.Height)) { using (var raw = new RawBitmap(bmp)) { raw.Clear(Color.Azure); if (_vb != null) { Vector volume = _vb.Volume; double scaleFactor = Math.Min(bmp.Width, bmp.Height) / 2.0 / Math.Max(volume.X, Math.Max(volume.Y, volume.Z)) * (_zoom / 10.0); // Рисуем объект. Matrix matrix = Matrix.CreateIdentity() * Matrix.CreateScale(scaleFactor, scaleFactor, scaleFactor) * _rotationMatrix * Matrix.CreateTranslate(bmp.Width / 2.0, bmp.Height / 2.0, 0); VertexBuffer tmpVb = _vb.Clone().Mult(matrix); tmpVb.CalcTrianglesNormals(); tmpVb.DrawTriangles(raw, Color.GhostWhite, true); // Рисуем тень объекта. matrix = Matrix.CreateIdentity() * Matrix.CreateScale(scaleFactor, scaleFactor, scaleFactor) * _rotationMatrix * Matrix.CreateScale(1, 1, 0) * Matrix.CreateTranslate(-100 * (_zoom / 10.0), 100 * (_zoom / 10.0), -1000) * Matrix.CreateTranslate(bmp.Width / 2.0, bmp.Height / 2.0, 0); tmpVb = _vb.Clone().Mult(matrix); tmpVb.CalcTrianglesNormals(); tmpVb.DrawTriangles(raw, Color.Gray, false); } } using (Graphics gfx = RenderPanel.CreateGraphics()) gfx.DrawImageUnscaled(bmp, 0, 0); } }
private void BrowseBtn_Click(object sender, EventArgs e) { openFileDialog1.Filter = "G-code Files(*.CNC;*.NC;*.TAP;*.TXT)|*.CNC;*.NC;*.TAP;*.TXT|All files (*.*)|*.*"; openFileDialog1.FileName = ""; if (openFileDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = openFileDialog1.FileName; if (File.Exists(textBox1.Text)) { mViewDevice.Clear(); using (StreamReader r = new StreamReader(textBox1.Text)) { string line = String.Empty; int rowCounter = 0; while ((line = r.ReadLine()) != null) { if (line.Trim() != "") { gcodeparser.GCodeParser.ParseLine(line); rowCounter++; } } serialResponseList.Items.Clear(); mViewDevice.CurrentCodeLineIndex = 0; SetupJob(); RenderPanel.Invalidate(); rowsInFileLbl.Text = "Rows: " + rowCounter.ToString(); } } } }
void CompositionTarget_Rendering(object sender, EventArgs e) { RenderPanel.Invalidate(); }
private void Panel1_MouseMove(object sender, MouseEventArgs e) { if (!isStageLoaded) { return; } bool draw = false; bool gizmo = false; switch (e.Button) { case MouseButtons.Middle: break; case MouseButtons.Left: if (transformGizmo.TransformGizmoMove(cam.mouseDelta, cam, selectedItems)) { unsaved = true; if (transformGizmo.SelectedAxes != GizmoSelectedAxes.NONE) { gizmo = true; } NeedPropertyRefresh = true; } foreach (PointHelper pointHelper in PointHelper.Instances) { if (pointHelper.TransformAffected(cam.mouseDelta.X / 2 * cam.MoveSpeed, cam.mouseDelta.Y / 2 * cam.MoveSpeed, cam)) { unsaved = true; } } draw = true; break; case MouseButtons.None: Vector3 mousepos = new Vector3(e.X, e.Y, 0); Viewport viewport = d3ddevice.Viewport; Matrix proj = d3ddevice.GetTransform(TransformState.Projection); Matrix view = d3ddevice.GetTransform(TransformState.View); Vector3 Near = mousepos; Near.Z = 0; Vector3 Far = Near; Far.Z = -1; GizmoSelectedAxes oldSelection = transformGizmo.SelectedAxes; transformGizmo.SelectedAxes = transformGizmo.CheckHit(Near, Far, viewport, proj, view, cam); if (oldSelection != transformGizmo.SelectedAxes) { draw = true; break; } foreach (PointHelper pointHelper in PointHelper.Instances) { GizmoSelectedAxes oldHelperAxes = pointHelper.SelectedAxes; pointHelper.SelectedAxes = pointHelper.CheckHit(Near, Far, viewport, proj, view, cam); if (oldHelperAxes != pointHelper.SelectedAxes) { pointHelper.Draw(d3ddevice, cam); draw = true; } } break; } mouseBounds = (wrapAroundScreenEdgesToolStripMenuItem.Checked) ? Screen.GetBounds(ClientRectangle) : RenderPanel.RectangleToScreen(RenderPanel.Bounds); EditorCamera.CameraUpdateFlags camresult = cam.UpdateCamera(new Point(Cursor.Position.X, Cursor.Position.Y), mouseBounds, lookKeyDown, zoomKeyDown, cameraKeyDown, hideCursorDuringCameraMovementToolStripMenuItem.Checked, gizmo); if (camresult.HasFlag(EditorCamera.CameraUpdateFlags.Redraw) || draw) { NeedRedraw = true; } }
private void panel1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Middle) { actionInputCollector.KeyDown(Keys.MButton); } if (!isStageLoaded) { return; } switch (e.Button) { // If the mouse button pressed is not one we're looking for, // we can avoid re-drawing the scene by bailing out. default: return; case MouseButtons.Left: Item item; if (isPointOperation) { HitResult res = PickItem(e.Location, out item); if (item != null) { using (PointToDialog dlg = new PointToDialog(res.Position.ToVertex(), item.Position)) if (dlg.ShowDialog(this) == DialogResult.OK) { foreach (SETItem it in System.Linq.Enumerable.OfType <SETItem>(selectedItems.GetSelection())) { it.PointTo(dlg.SelectedLocation); } } isPointOperation = false; LevelData.InvalidateRenderState(); } return; } if (transformGizmo != null) { if (moveModeButton.Checked) { transformGizmo.Mode = TransformMode.TRANFORM_MOVE; } else if (rotateModeButton.Checked) { transformGizmo.Mode = TransformMode.TRANSFORM_ROTATE; } else if (scaleModeButton.Checked) { transformGizmo.Mode = TransformMode.TRANSFORM_SCALE; } else { transformGizmo.Mode = TransformMode.NONE; } } // If we have any helpers selected, don't execute the rest of the method! if (transformGizmo.SelectedAxes != GizmoSelectedAxes.NONE) { return; } foreach (PointHelper pointHelper in PointHelper.Instances) { if (pointHelper.SelectedAxes != GizmoSelectedAxes.NONE) { return; } } PickItem(e.Location, out item); if (item != null) { if (ModifierKeys == Keys.Control) { if (selectedItems.GetSelection().Contains(item)) { selectedItems.Remove(item); } else { selectedItems.Add(item); } } else if (!selectedItems.GetSelection().Contains(item)) { selectedItems.Clear(); selectedItems.Add(item); } } else if ((ModifierKeys & Keys.Control) == 0) { selectedItems.Clear(); } break; case MouseButtons.Right: actionInputCollector.ReleaseKeys(); mouseBounds = (wrapAroundScreenEdgesToolStripMenuItem.Checked) ? Screen.GetBounds(ClientRectangle) : RenderPanel.RectangleToScreen(RenderPanel.Bounds); cam.UpdateCamera(new System.Drawing.Point(Cursor.Position.X, Cursor.Position.Y), new System.Drawing.Rectangle(), false, false, false, hideCursorDuringCameraMovementToolStripMenuItem.Checked); if (isPointOperation) { isPointOperation = false; return; } bool cancopy = false; foreach (Item obj in selectedItems.GetSelection()) { if (obj.CanCopy) { cancopy = true; } } if (cancopy) { /*cutToolStripMenuItem.Enabled = true; * copyToolStripMenuItem.Enabled = true;*/ deleteToolStripMenuItem.Enabled = true; cutToolStripMenuItem.Enabled = false; copyToolStripMenuItem.Enabled = false; } else { cutToolStripMenuItem.Enabled = false; copyToolStripMenuItem.Enabled = false; deleteToolStripMenuItem.Enabled = false; } pasteToolStripMenuItem.Enabled = false; menuLocation = e.Location; contextMenuStrip1.Show(RenderPanel, e.Location); break; } }
public RenderTests() { _jpgDevice = new JPGGraphicsDeviceProvider(512, 360); _renderPanel = new RenderPanel(_jpgDevice.GraphicsDevice); }