public void OpenGLControl_OpenGLDraw(object sender, OpenGLRoutedEventArgs args) //Ивент для отрисовки кадра { args.OpenGL.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT); //Отчищаем полотно //if (FabricFiguries.CurrentFigure != null) Figure.Draw(Painter); //Отрисовка новой фигуры FabricFiguries.DrawCurrenFigure(Painter); FabricFiguries.DrawAll(Painter); //Рисуем все фигуры из фабрики }
private void MouseMove_Event(object sender, MouseEventArgs e) { var MouseCoord = e.GetPosition(GLCanvas);//Сичтываем позицию мыши на полотне //Меняем вторую координату фигуры для изменения размера и положения фигуры FabricFiguries.SetEnd(new NormPoint(MouseCoord.X, MouseCoord.Y)); FabricFiguries.Initialization(); //Figure.EndCoord = new NormPoint(MouseCoord.X, MouseCoord.Y); }
public void OpenGLControl_Resized(object sender, OpenGLRoutedEventArgs args) //Ивент изменения размера окна { var glContol = (OpenGLControl)sender; //Присваиваем новые размеры полотна NormPoint.Height = glContol.ActualHeight; NormPoint.Widht = glContol.ActualWidth; //Изменяем положение фигур на новом холсте FabricFiguries.Update(); }
private void MouseUp_Event(object sender, MouseButtonEventArgs e) { GLCanvas.MouseMove -= MouseMove_Event; GLCanvas.MouseLeftButtonUp -= MouseUp_Event; //Добавляем фигуру в фабрику для дальнейшей отрисовки FabricFiguries.AddFigureToFabric(); FabricFiguries.ReCreate(); GLCanvas.MouseLeftButtonDown += MouseDown_Event; }
/* * Евенты для рисования фигуры мышью */ //Ивент срабатывающий при нажатии на холст левой кнопкой мыши. //При нажатии на холст создается фигура private void MouseDown_Event(object sender, MouseButtonEventArgs e) { GLCanvas.MouseLeftButtonDown -= MouseDown_Event; //FabricFiguries.Create(id); //Создаем экземляр класса фигуры var gLControl = (OpenGLControl)sender; var MouseCoord = e.GetPosition(GLCanvas); //Сичтываем позицию мыши на полотне //Назначаем начальную координату фигуры, которая в дальнейшем меняться не будет FabricFiguries.SetBegin(new NormPoint(MouseCoord.X, MouseCoord.Y)); FabricFiguries.SetEnd(new NormPoint(MouseCoord.X, MouseCoord.Y)); FabricFiguries.Initialization(); //Figure.Init(new NormPoint(MouseCoord.X, MouseCoord.Y), new NormPoint(MouseCoord.X, MouseCoord.Y), Color_, Thickness); //Вторая координата фигуры, которая в дальнейшем будет меняться в ивенте MouseMove_Event GLCanvas.MouseMove += MouseMove_Event; //Назначаем ивент для движения мышью с помощью которого будем менять размер фигуры GLCanvas.MouseLeftButtonUp += MouseUp_Event; //Назначаем ивент при отпуске левой кнопки мыши заканчивающий создание фигуры }
public FigureSelectVM(Grid FiguresSelectPanel, CanvasVM canvasVM, SliderVM slider, ColorVM colorVM) { this.canvasVM = canvasVM; NewFigure = new ButtonCommand(obj => { foreach (Button elem in FiguresSelectPanel.Children) { elem.Background = new SolidColorBrush(MaterialDesignColors.Recommended.CyanSwatch.Cyan500); } var btn = obj as Button; btn.Background = new SolidColorBrush(MaterialDesignColors.Recommended.RedSwatch.Red500); canvasVM.SetEventbyButtonName(btn.Name); FabricFiguries.Create(btn.Name); FabricFiguries.SetThickness(slider.SliderValue); FabricFiguries.SetColor(ColorTranslator.FromHtml(colorVM.CurrentColor)); }); foreach (Button elem in FiguresSelectPanel.Children) { elem.Command = NewFigure; elem.CommandParameter = elem; } }
private void Select_Event(object sender, MouseButtonEventArgs e) { var MouseCoord = e.GetPosition(GLCanvas); FabricFiguries.SelectFigure(new NormPoint(MouseCoord.X, MouseCoord.Y)); }