HitTestResultBehavior HitTest(HitTestResult ht) { var r = ht as RayMeshGeometry3DHitTestResult; if (r == null) return HitTestResultBehavior.Continue; svr.Move(bFirst, r.PointHit.X < (svr.BarPos(bFirst) - 0.5 + barRate / 2) * 300); return HitTestResultBehavior.Stop; }
public HitTestResultBehavior ResultCallBack(HitTestResult result) { // Did we hit 3D? RayHitTestResult rayResult = result as RayHitTestResult; if (rayResult != null) { // Did we hit a MeshGeometry3D? RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as RayMeshGeometry3DHitTestResult; if (rayMeshResult != null) { GeometryModel3D hitgeo = rayMeshResult.ModelHit as GeometryModel3D; DiffuseMaterial dm = hitgeo.Material as DiffuseMaterial; SolidColorBrush b = dm.Brush as SolidColorBrush; Color c = b.Color; c.ScB = 1 - c.ScB; c.ScG = 1 - c.ScG; c.ScR = 1 - c.ScR; hitgeo.Material = new DiffuseMaterial(new SolidColorBrush(c)); } } return HitTestResultBehavior.Continue; }
private HitTestResultBehavior SelectModel(HitTestResult result) { RayHitTestResult res = result as RayHitTestResult; if (res != null) { DependencyObject visual = res.VisualHit; object model = null, scene = null; while (visual != null) { if (consoleMode) { if (visual is Model) scope.SetVariable("model", model = visual); else if (visual is Scene) scope.SetVariable("scene", scene = visual); } else Control.SendClick(visual, result); visual = VisualTreeHelper.GetParent(visual); } selection.Text = $"Selection: {model} in {scene}"; } return HitTestResultBehavior.Stop; }
private HitTestResultBehavior HitTestCallback(HitTestResult result) { var rayhit = result as RayHitTestResult; hitTestValue = rayhit.PointHit; hit = true; return HitTestResultBehavior.Continue; }
private async void DataGridMinimum_MouseMove(object sender, MouseEventArgs e) { try { System.Windows.Media.HitTestResult hitTestResult = VisualTreeHelper.HitTest(DataGridMinimum, e.GetPosition(DataGridMinimum)); DataGridRow dataGridRow = hitTestResult.VisualHit.GetParentOfType <DataGridRow>(); if (dataGridRow != null) { int index = dataGridRow.GetIndex(); var combination = DataGridMinimum.CurrentItem; // Items[index]).Name; if (combination != null) { MinimumPriceProductModel model = (MinimumPriceProductModel)combination; string val = "История цен: \n"; IList <int> history = await dbLoader.GetPriceHistoryAsync(model.ProductID); foreach (var item in history) { val += $"{item} \n"; } dgTooltip.IsOpen = true; dgTooltip.Content = val; } } } catch (Exception) { } }
private HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult) { RayHitTestResult rayResult = rawresult as RayHitTestResult; ToolTip tt = new ToolTip(); if (f1 != null || f2 != null) { map.Children.Remove(f1); map.Children.Remove(f2); map.Children.Add(models[id1].Item1); map.Children.Add(models[id2].Item1); } if (rayResult != null) { bool gasit = false; foreach (var gm in models.Values) { if (gm.Item1 == rayResult.ModelHit) { hitgeo = (GeometryModel3D)rayResult.ModelHit; gasit = true; tt = GetIsToolTip(gm.Item1); MessageBox.Show(tt.Content.ToString()); } } foreach (var gm in linesmodel) { if (gm == rayResult.ModelHit) { hitgeo = (GeometryModel3D)rayResult.ModelHit; gasit = true; tt = GetIsToolTip(gm); MessageBox.Show(tt.Content.ToString()); string id = tt.Content.ToString().Split(',')[0].Split(':')[1].Substring(1); foreach (var item in lines) { long idd = long.Parse(id); if (item.ID == idd) { id1 = (long)item.FirstEnd; id2 = (long)item.SecondEnd; map.Children.Remove(models[(long)item.FirstEnd].Item1); map.Children.Remove(models[(long)item.SecondEnd].Item1); f1 = new GeometryModel3D(models[(long)item.FirstEnd].Item1.Geometry, models[(long)item.FirstEnd].Item1.Material); f1.Material = new DiffuseMaterial(Brushes.Pink); f2 = new GeometryModel3D(models[(long)item.SecondEnd].Item1.Geometry, models[(long)item.SecondEnd].Item1.Material); f2.Material = new DiffuseMaterial(Brushes.Pink); map.Children.Add(f1); map.Children.Add(f2); } } } } if (!gasit) { hitgeo = null; } } return(HitTestResultBehavior.Stop); }
private HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult) { RayHitTestResult rayResult = rawresult as RayHitTestResult; if (rayResult != null) { bool gasit = false; for (int i = 0; i < geometryAndEntyty.Keys.Count(); i++) { if ((GeometryModel3D)geometryAndEntyty.Keys.ToList()[i] == rayResult.ModelHit) { hitgeo = (GeometryModel3D)rayResult.ModelHit; gasit = true; var entity = geometryAndEntyty[hitgeo]; toolTip = new ToolTip(); toolTip.Content = "\tPOWER ENTITY:\nID: " + entity.Id.ToString() + "\nName: " + entity.Name + "\nType: " + entity.GetType().Name; //toolTip.Margin = new Thickness(mousePositionForToolTip.X, mousePositionForToolTip.Y, 0, 0); toolTip.Height = 80; toolTip.IsOpen = true; ToolTipService.SetPlacement(ViewPort, System.Windows.Controls.Primitives.PlacementMode.Mouse); break; } else { toolTip.IsOpen = false; } } if (!gasit) { hitgeo = null; } } return(HitTestResultBehavior.Stop); }
public HitTestResultBehavior MainHitTestResult(HitTestResult result) { if ((result.VisualHit as DrawingVisual) != null) { hittedElements.Add(result.VisualHit as DrawingVisual); } return HitTestResultBehavior.Continue; }
HitTestResultBehavior InfoHitTestSelOneResultCallback(HitTestResult result) { var frameworkElement = result.VisualHit as FrameworkElement; if (frameworkElement == null) return HitTestResultBehavior.Continue; _infoShape = frameworkElement; return HitTestResultBehavior.Stop; }
HitTestResultBehavior RailHitTestSelOneResultCallback(HitTestResult result) { var frameworkElement = result.VisualHit as FrameworkElement; if (frameworkElement == null || !(frameworkElement.Tag is Rail)) return HitTestResultBehavior.Continue; _railUnderMouse = frameworkElement.Tag as Rail; return HitTestResultBehavior.Stop; }
// If a child visual object is hit, toggle its opacity to visually indicate a hit. public HitTestResultBehavior MyCallback(HitTestResult result) { if (result.VisualHit.GetType() == typeof (System.Windows.Media.DrawingVisual)) { ((System.Windows.Media.DrawingVisual) result.VisualHit).Opacity = ((System.Windows.Media.DrawingVisual) result.VisualHit).Opacity == 1.0 ? 0.4 : 1.0; } // Stop the hit test enumeration of objects in the visual tree. return HitTestResultBehavior.Stop; }
// Return the result of the hit test to the callback. public HitTestResultBehavior PerformHitTest(HitTestResult result) { FrameworkElement visual = (FrameworkElement)result.VisualHit; // Add the hit test result to the list that will be processed after the enumeration. if (visual.IsHitTestVisible) hitTestResults.Add(visual); else return HitTestResultBehavior.Stop; // Set the behavior to return visuals at all z-order levels. return HitTestResultBehavior.Continue; }
private HitTestResultBehavior HitTestCallback(HitTestResult result) { GeometryHitTestResult geometryResult = (GeometryHitTestResult)result; DrawingVisual visual = result.VisualHit as DrawingVisual; if (visual != null && geometryResult.IntersectionDetail == IntersectionDetail.FullyInside) { hits.Add(visual); } return HitTestResultBehavior.Continue; }
private HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult) { RayHitTestResult rayResult = rawresult as RayHitTestResult; if (rayResult != null) { if (rayResult.VisualHit is Disk) { MessageBox.Show(((Disk)(rayResult.VisualHit)).AppName); } if (scene.Models[0] == rayResult.VisualHit) { if (!((Sphere)scene.Models[0]).Children.Contains(pokeable_modelvisual_3d)) { //System.Diagnostics.Process.Start("Notepad.exe"); scene.ToggleTimer(); //scene.Models.Add(new TextVisual3D() {Text="Hello", Position= new Point3D (0,0,3) }); old = scene.Camera.Position; scene.Camera.Position = new Point3D(15, -6, 12); scene.Camera.Rotate(new Vector3D(2, 1, 1), -70); ((Sphere)scene.Models[0]).Children.Add(pokeable_modelvisual_3d); tb.Focus(); tb.TextChanged += Tb_TextChanged; //tb.Text = angle.ToString(); } else { scene.ToggleTimer(); //scene.Models.Add(new TextVisual3D() {Text="Hello", Position= new Point3D (0,0,3) }); //scene.Camera.Position = new Point3D(25, -15, 8); //scene.Camera.Rotate(new Vector3D(2, 1, 1), 100); ((Sphere)scene.Models[0]).Children.Remove(pokeable_modelvisual_3d); scene.Camera.Position = old; } } //if (cross == rayResult.ModelHit) //{ // this.Close(); //} //if (pyramid == rayResult.ModelHit) //{ // DragMove(); //} } return(HitTestResultBehavior.Stop); }
protected HitTestResultBehavior OnVisualHit(HitTestResult result) { foreach (NameValuePair nvp in dataPoints) { if (nvp.Tag == result.VisualHit) { MessageBox.Show("Name: " + nvp.Name + ", Value: " + nvp.Value.ToString()); break; } } return HitTestResultBehavior.Continue; }
/// <summary> /// The HTResult function simply takes the intersection closest to the origin and /// and stores the intersection info for that closest intersection point. /// </summary> /// <param name="rawresult"></param> /// <returns></returns> private HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult) { RayHitTestResult rayResult = rawresult as RayHitTestResult; HitTestResultBehavior hitTestResultBehavior = HitTestResultBehavior.Continue; // since we're hit testing a viewport3D we should be getting the ray hit test result back if (rayResult != null) { _closestIntersectInfo = GetIntersectionInfo(rayResult); hitTestResultBehavior = HitTestResultBehavior.Stop; } return(hitTestResultBehavior); }
// Return the result of the hit test to the callback. public HitTestResultBehavior MyHitTestResult(HitTestResult result) { if (result.VisualHit is FrameworkElement) { if (((FrameworkElement) result.VisualHit).DataContext is Appraisal) { hitResultsList.Add(((FrameworkElement)result.VisualHit).DataContext as Appraisal); } } // Add the hit test result to the list that will be processed after the enumeration. // Set the behavior to return visuals at all z-order levels. return HitTestResultBehavior.Stop; }
// Handle the hit test results enumeration in the callback. internal static HitTestResultBehavior CircleHitTestResult(HitTestResult result) { // Add the hit test result to the list that will be processed after the enumeration. HitResultsList.Add(result.VisualHit); // Determine whether hit test should return only the top-most layer visual. if (MyWindow.TopmostLayer) { // Set the behavior to stop the enumeration of visuals. return HitTestResultBehavior.Stop; } // Set the behavior to continue the enumeration of visuals. // All visuals that intersect at the hit test coordinates are returned, // whether visible or not. return HitTestResultBehavior.Continue; }
HTResult(System.Windows.Media.HitTestResult rawresult) { RayHitTestResult rayResult = rawresult as RayHitTestResult; if (rayResult != null) { DiffuseMaterial darkSide = new DiffuseMaterial(new SolidColorBrush( System.Windows.Media.Colors.Red)); bool gasit = false; for (int i = 1; i < grupica.Children.Count; i++) { if ((GeometryModel3D)grupica.Children[i] == rayResult.ModelHit) { hitgeo = (GeometryModel3D)rayResult.ModelHit; //tu se nalazi kvadar koji smo pogopdili gasit = true; MeshGeometry3D hitMesh = (MeshGeometry3D)hitgeo.Geometry; double xMin = 45.2325; //19.72727 19.793909 double xMax = 45.277031; //19.95094 19.894459 double yMin = 19.793909; //45.18972 45.2325 double yMax = 19.894459; //45.32873 45.277031 double stopaX = 200 / (xMax - xMin); double stopaY = 200 / (yMax - yMin); Point3D p = hitMesh.Positions[0]; double x = p.X; double y = p.Z; foreach (CvorMape cm in sviCvorovi) { if (x == (stopaX * (cm.X - xMin)) && y == (stopaY * (cm.Y - yMin))) { MessageBox.Show("name: " + cm.Name + " id: " + cm.Id + " type: " + cm.Type); } } } } if (!gasit) { hitgeo = null; } } return(HitTestResultBehavior.Stop); //enumeracija, to znaci da hocemo da zaustavimo zrak, a ne da se nastavlja }
// If a child visual object is hit, toggle its opacity to visually indicate a hit. public HitTestResultBehavior myCallback(HitTestResult result) { if (result.VisualHit.GetType() == typeof(DrawingVisual)) { if (((DrawingVisual)result.VisualHit).Opacity == 1.0) { ((DrawingVisual)result.VisualHit).Opacity = 0.4; } else { ((DrawingVisual)result.VisualHit).Opacity = 1.0; } } // Stop the hit test enumeration of objects in the visual tree. return HitTestResultBehavior.Stop; }
public HitTestResultBehavior myCallback(HitTestResult result) { // Toggle between a skewed rendering and normal rendering, // if a visual was clicked. if (result.VisualHit.GetType() == typeof(DrawingVisual)) { if (((DrawingVisual)result.VisualHit).Transform == null) { ((DrawingVisual)result.VisualHit).Transform = new SkewTransform(7, 7); } else { ((DrawingVisual)result.VisualHit).Transform = null; } } // Tell HitTest() to stop drilling into the visual tree. return HitTestResultBehavior.Stop; }
public HitTestResultBehavior HTResult(HitTestResult2D result2d) { RayMeshGeometry3DHitTestResult rayht = (result2d as RayMeshGeometry3DHitTestResult); Model3D model = rayht.ModelHit; foreach (ListBox3DItem ci in this.Items) { if (ci.ItemGroup.Children.Contains(model)) { if (rayht.DistanceToRayOrigin < _ciHitTestDistance) { _ciHitTest = ci; _ciHitTestDistance = rayht.DistanceToRayOrigin; } } } return(HitTestResultBehavior.Continue); }
//<SnippetHitTest3D3DN5> public HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult) { //MessageBox.Show(rawresult.ToString()); RayHitTestResult rayResult = rawresult as RayHitTestResult; if (rayResult != null) { RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as RayMeshGeometry3DHitTestResult; if (rayMeshResult != null) { GeometryModel3D hitgeo = rayMeshResult.ModelHit as GeometryModel3D; UpdateResultInfo(rayMeshResult); UpdateMaterial(hitgeo, (side1GeometryModel3D.Material as MaterialGroup)); } } return(HitTestResultBehavior.Continue); }
HitTestResultBehavior NodeOrRailHitTestSelOnlyOneNodeCallback(HitTestResult result) { var frameworkElement = result.VisualHit as FrameworkElement; if (!(frameworkElement is Path)) return HitTestResultBehavior.Continue; object tag = frameworkElement.Tag; if (tag != null) { GraphmapsNode graphmapsNode = tag as GraphmapsNode; if (graphmapsNode != null) { _nodeUnderMouse = graphmapsNode; return HitTestResultBehavior.Stop; } else { var rail = frameworkElement.Tag as Rail; if (rail != null) _railUnderMouse = rail; } } return HitTestResultBehavior.Continue; }
// Return the result of the hit test to the callback. private static HitTestResultBehavior hitTestResultCallback(HitTestResult result) { // Retrieve the results of the hit test. IntersectionDetail intersectionDetail = ((GeometryHitTestResult)result).IntersectionDetail; switch (intersectionDetail) { case IntersectionDetail.FullyContains: // Add the hit test result to the list that will be processed after the enumeration. hitResultsList.Add(result.VisualHit); return HitTestResultBehavior.Continue; case IntersectionDetail.Intersects: hitResultsList.Add(result.VisualHit); // Set the behavior to return visuals at all z-order levels. return HitTestResultBehavior.Continue; case IntersectionDetail.FullyInside: hitResultsList.Add(result.VisualHit); // Set the behavior to return visuals at all z-order levels. return HitTestResultBehavior.Continue; default: return HitTestResultBehavior.Stop; } }
public HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult) { RayHitTestResult rayResult = rawresult as RayHitTestResult; if (rayResult == null) { return(HitTestResultBehavior.Continue); } RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as RayMeshGeometry3DHitTestResult; if (rayMeshResult == null) { return(HitTestResultBehavior.Continue); } GeometryModel3D hitgeo = rayMeshResult.ModelHit as GeometryModel3D; if (!(hitgeo == planeOdd || hitgeo == planeEven)) { return(HitTestResultBehavior.Continue); } //World.TargetPosition = new Vector(rayResult.PointHit.X, rayResult.PointHit.Z); var unit = new Unit { World = World.Model }; unit.Position = new Vector(rayResult.PointHit.X, rayResult.PointHit.Z);; unit.Selected = false; unit.Type = UnitsEditor.UnitType; unit.Behavior = BehaviortreesEditor.Current?.Model; World.Model.PendingActions.Add((world) => { world.Units.Add(unit); }); return(HitTestResultBehavior.Stop); }
public HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult) { //MessageBox.Show(rawresult.ToString()); RayHitTestResult rayResult = rawresult as RayHitTestResult; if (rayResult != null) { RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as RayMeshGeometry3DHitTestResult; if (rayMeshResult != null) { GeometryModel3D hitgeo = rayMeshResult.ModelHit as GeometryModel3D; var id = (Guid)hitgeo.GetValue(File3dmProperties.IdKey.DependencyProperty); lB_PickedObjectProps.ItemsSource = _file.Objects.FindId(id).GetObjectProperties(); //UpdateResultInfo(rayMeshResult); //UpdateMaterial(hitgeo, (side1GeometryModel3D.Material as MaterialGroup)); } } return(HitTestResultBehavior.Continue); }
/// <summary> /// 获取鼠标在场景中的3D坐标 /// </summary> public HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult) { RayHitTestResult rayResult = rawresult as RayHitTestResult; if (rayResult != null) { RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as RayMeshGeometry3DHitTestResult; if (rayMeshResult != null) { GeometryModel3D hitgeo = rayMeshResult.ModelHit as GeometryModel3D; MeshGeometry3D hitmesh = hitgeo.Geometry as MeshGeometry3D; Point3D p1 = hitmesh.Positions.ElementAt(rayMeshResult.VertexIndex1); double weight1 = rayMeshResult.VertexWeight1; Point3D p2 = hitmesh.Positions.ElementAt(rayMeshResult.VertexIndex2); double weight2 = rayMeshResult.VertexWeight2; Point3D p3 = hitmesh.Positions.ElementAt(rayMeshResult.VertexIndex3); double weight3 = rayMeshResult.VertexWeight3; Point3D prePoint = new Point3D(p1.X * weight1 + p2.X * weight2 + p3.X * weight3, p1.Y * weight1 + p2.Y * weight2 + p3.Y * weight3, p1.Z * weight1 + p2.Z * weight2 + p3.Z * weight3); pMouse = new Point(prePoint.X, prePoint.Y); } } return(HitTestResultBehavior.Continue); }
private HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult) { RayHitTestResult rayResult = rawresult as RayHitTestResult; if (rayResult != null) { foreach (SubstationEntity s in substationEntities) { if (s.Obj == rayResult.ModelHit) { MessageBox.Show("SubstationEntity\n\nId: " + s.Id + "\nName: " + s.Name, "System Element Info", MessageBoxButton.OK, MessageBoxImage.Information); mouseDown = false; } } foreach (NodeEntity s in nodeEntities) { if (s.Obj == rayResult.ModelHit) { MessageBox.Show("NodeEntity\n\nId: " + s.Id + "\nName: " + s.Name, "System Element Info", MessageBoxButton.OK, MessageBoxImage.Information); mouseDown = false; } } foreach (SwitchEntity s in switchEntities) { if (s.Obj == rayResult.ModelHit) { MessageBox.Show("SwitchEntity\n\nId: " + s.Id + "\nName: " + s.Name, "System Element Info", MessageBoxButton.OK, MessageBoxImage.Information); mouseDown = false; } } } return(HitTestResultBehavior.Stop); }
private HitTestResultBehavior HitResult(System.Windows.Media.HitTestResult rawresult) { RayHitTestResult rayResult = rawresult as RayHitTestResult; if (rayResult != null) { DiffuseMaterial darkSide = new DiffuseMaterial(new SolidColorBrush(System.Windows.Media.Colors.Red)); bool gasit = false; int cnt = 0; for (int i = 0; i < models.Count; i++) { if (models[i] == rayResult.ModelHit) { hitgeo = (GeometryModel3D)rayResult.ModelHit; gasit = true; if (MapHandler.Entities[i].GetType() != typeof(LineEntity)) { MessageBox.Show(MapHandler.Entities[i].ToString()); } else { Brush b = null; foreach (var item in MapHandler.Entities) { if (item.Value.Id == ((LineEntity)MapHandler.Entities[i]).FirstEnd || item.Value.Id == ((LineEntity)MapHandler.Entities[i]).SecondEnd) { if (cnt > 2) { break; } if (((DiffuseMaterial)((GeometryModel3D)TransformationHandler.models[item.Key]).Material).Brush == Brushes.ForestGreen) { cnt++; b = Brushes.ForestGreen; foreach (var child in window.MyModel.Children) { if (child == ScreenHandler.drawModels[item.Key]) { ((GeometryModel3D)((ModelVisual3D)child).Content).Material = new DiffuseMaterial(Brushes.Pink); } } } else if (((DiffuseMaterial)((GeometryModel3D)TransformationHandler.models[item.Key]).Material).Brush == Brushes.Pink) { cnt++; b = Brushes.Pink; foreach (var child in window.MyModel.Children) { if (child == ScreenHandler.drawModels[item.Key]) { ((GeometryModel3D)((ModelVisual3D)child).Content).Material = new DiffuseMaterial(Brushes.ForestGreen); } } } else if (((DiffuseMaterial)((GeometryModel3D)TransformationHandler.models[item.Key]).Material).Brush == Brushes.Red) { cnt++; b = Brushes.Red; foreach (var child in window.MyModel.Children) { if (child == ScreenHandler.drawModels[item.Key]) { ((GeometryModel3D)((ModelVisual3D)child).Content).Material = new DiffuseMaterial(Brushes.Yellow); } } } else if (((DiffuseMaterial)((GeometryModel3D)TransformationHandler.models[item.Key]).Material).Brush == Brushes.Yellow) { cnt++; foreach (var child in window.MyModel.Children) { if (child == ScreenHandler.drawModels[item.Key]) { ((GeometryModel3D)((ModelVisual3D)child).Content).Material = new DiffuseMaterial(Brushes.Red); } } } else if (((DiffuseMaterial)((GeometryModel3D)TransformationHandler.models[item.Key]).Material).Brush == Brushes.Blue) { cnt++; b = Brushes.Blue; foreach (var child in window.MyModel.Children) { if (child == ScreenHandler.drawModels[item.Key]) { ((GeometryModel3D)((ModelVisual3D)child).Content).Material = new DiffuseMaterial(Brushes.Orange); } } } else if (((DiffuseMaterial)((GeometryModel3D)TransformationHandler.models[item.Key]).Material).Brush == Brushes.Orange) { cnt++; b = Brushes.Orange; foreach (var child in window.MyModel.Children) { if (child == ScreenHandler.drawModels[item.Key]) { ((GeometryModel3D)((ModelVisual3D)child).Content).Material = new DiffuseMaterial(Brushes.Blue); } } } } } break; } } if (cnt > 2) { break; } } if (!gasit) { hitgeo = null; } } return(HitTestResultBehavior.Stop); }
private HitTestResultBehavior DirectHitTestCallback(HitTestResult result) { if (null != result && (null != result.VisualHit)) { hitResultsList.Add(result.VisualHit); return HitTestResultBehavior.Stop; } return HitTestResultBehavior.Continue; }
private HitTestResultBehavior VisualCallback(HitTestResult result) { if (result == null || result.VisualHit == null) throw new ArgumentNullException(); if (result.VisualHit.GetType() == typeof(Grid)) hitResultsList.Add(result.VisualHit); return HitTestResultBehavior.Continue; }
/// <summary> /// Callback /// </summary> /// <param name="result"></param> /// <returns></returns> public HitTestResultBehavior Callback(HitTestResult result) { MoveObject = result.VisualHit; return HitTestResultBehavior.Stop; }
// Return the result of the hit test to the callback. public HitTestResultBehavior MyHitTestResult(HitTestResult result) { // Add the hit test result to the list that will be processed after the enumeration. var hit = result.VisualHit as FrameworkElement; if (hit == null) return HitTestResultBehavior.Continue; var fe = hit; if (!(fe.DataContext is FloatingElement) || fe.DataContext == _fe) return HitTestResultBehavior.Continue; var f = (FloatingElement) fe.DataContext; if (f.AllowDrop && f.AllowedDropsTags.Contains(_fe.DropTag)) { hitResultsList.Add(f); } // Set the behavior to return visuals at all z-order levels. return HitTestResultBehavior.Continue; }
private HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult) { RayHitTestResult rayResult = rawresult as RayHitTestResult; ToolTip toolTip = new ToolTip(); LineEntity line = new LineEntity(); if (rayResult != null) { bool gasit = false; foreach (var model in models) { if (model == rayResult.ModelHit) { hitgeo = (GeometryModel3D)rayResult.ModelHit; gasit = true; toolTip = GetIsToolTip(model); MessageBox.Show(toolTip.Content.ToString()); line = GetIsLine(model); if (line != null) { NodeEntity node1; NodeEntity node2; for (int i = 0; i < DataContainers.Containers.GetNodes.Count; i++) { if (DataContainers.Containers.GetNodes.ElementAt(i).Id == line.FirstEnd) { node1 = DataContainers.Containers.GetNodes.ElementAt(i); } if (DataContainers.Containers.GetNodes.ElementAt(i).Id == line.SecondEnd) { node2 = DataContainers.Containers.GetNodes.ElementAt(i); } } SwitchEntity switch1; SwitchEntity switch2; for (int i = 0; i < DataContainers.Containers.GetSwitches.Count; i++) { if (DataContainers.Containers.GetSwitches.ElementAt(i).Id == line.FirstEnd) { switch1 = DataContainers.Containers.GetSwitches.ElementAt(i); } if (DataContainers.Containers.GetSwitches.ElementAt(i).Id == line.SecondEnd) { switch2 = DataContainers.Containers.GetSwitches.ElementAt(i); } } SubstationEntity substation1; SubstationEntity substation2; for (int i = 0; i < DataContainers.Containers.GetSubstations.Count; i++) { if (DataContainers.Containers.GetSubstations.ElementAt(i).Id == line.FirstEnd) { substation1 = DataContainers.Containers.GetSubstations.ElementAt(i); } if (DataContainers.Containers.GetSubstations.ElementAt(i).Id == line.SecondEnd) { substation2 = DataContainers.Containers.GetSubstations.ElementAt(i); } } // pronadjeni su povezani tipovi } } } if (!gasit) { hitgeo = null; } } return(HitTestResultBehavior.Stop); }
/// <summary> /// 点击模型事件 /// </summary> /// <param name="rawresult"></param> /// <returns></returns> public HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult) { RayHitTestResult rayResult = rawresult as RayHitTestResult; if (rayResult != null) { RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as RayMeshGeometry3DHitTestResult; if (rayMeshResult != null) { GeometryModel3D hitgeo = rayMeshResult.ModelHit as GeometryModel3D; MeshGeometry3D hitmesh = hitgeo.Geometry as MeshGeometry3D; //获取当前点击的点 Point3D po3D = rayMeshResult.PointHit; Point3D pa3D = hitmesh.Positions[rayMeshResult.VertexIndex1]; Point3D pb3D = hitmesh.Positions[rayMeshResult.VertexIndex2]; Point3D pc3D = hitmesh.Positions[rayMeshResult.VertexIndex3]; //Point3D pTmp = Control.PositionCalculation.pointTransDoorCoordinate(po3D); //将View3D转成物体坐标系 Point3D pTmp = po3D; //将View3D转成物体坐标系 //在控件上显示坐标 //this.Title = " x=" + pTmp.X.ToString() + " y=" + pTmp.Y.ToString() + " z= " + pTmp.Z.ToString(); //PointInfoDisplayShow(); //labelPointInfoDisplay.Content = "Position:\r\n x=" + ((decimal)pTmp.X).ToString("F8") + "\r\n y=" + ((decimal)pTmp.Y).ToString("F8") + "\r\n z= " + ((decimal)pTmp.Z).ToString("F8"); //labelPointInfoDisplay.Content += "\r\n\r\nCamera:"; //labelPointInfoDisplay.Content += ("\r\n LookDirection=" + camera.LookDirection.ToString()); //labelPointInfoDisplay.Content += ("\r\n FarPlaneDistance=" + camera.FarPlaneDistance.ToString()); //labelPointInfoDisplay.Content += ("\r\n UpDirection=" + camera.UpDirection.ToString()); //labelPointInfoDisplay.Content += ("\r\n NearPlaneDistance=" + camera.NearPlaneDistance.ToString()); //labelPointInfoDisplay.Content += ("\r\n Position=" + camera.Position.ToString()); //labelPointInfoDisplay.Content += ("\r\n FieldOfView=" + camera.FieldOfView.ToString()); ////labelPointInfoDisplay.Content += "\r\n\r\nTrackballDecorator:"; ////labelPointInfoDisplay.Content += ("\r\n ActualHeight=" + toolsTrackballDecorator.ActualHeight.ToString()); ////labelPointInfoDisplay.Content += ("\r\n ActualWidth=" + toolsTrackballDecorator.ActualWidth.ToString()); ////labelPointInfoDisplay.Content += ("\r\n FlowDirection=" + toolsTrackballDecorator.FlowDirection.ToString()); ////labelPointInfoDisplay.Content += ("\r\n LayoutTransform.value=" + toolsTrackballDecorator.LayoutTransform.Value.ToString()); ////labelPointInfoDisplay.Content += ("\r\n Width=" + toolsTrackballDecorator.Width.ToString()); //labelPointInfoDisplay.Content += "\r\n\r\nClick Face Vertex A:"; //labelPointInfoDisplay.Content += ("\r\n A.x=" + pa3D.X.ToString() + "\r\n A.y=" + pa3D.Y.ToString() + "\r\n A.z= " + pa3D.Z.ToString()); //labelPointInfoDisplay.Content += "\r\n\r\nClick Face Vertex B:"; //labelPointInfoDisplay.Content += ("\r\n B.x=" + pb3D.X.ToString() + "\r\n B.y=" + pb3D.Y.ToString() + "\r\n B.z= " + pb3D.Z.ToString()); //labelPointInfoDisplay.Content += "\r\n\r\nClick Face Vertex C:"; //labelPointInfoDisplay.Content += ("\r\n C.x=" + pc3D.X.ToString() + "\r\n C.y=" + pc3D.Y.ToString() + "\r\n C.z= " + pc3D.Z.ToString()); //if (bPointPaintKey) // ShowClickPoint(pTmp, pa3D, pb3D, pc3D, TrajGlobalParam.dHigh); ////ShowClickPoint(pTmp); //labelPointInfoDisplay.Content += "\r\n\r\nPointXYZR:"; //labelPointInfoDisplay.Content += ("\r\n PointXYZR.x=" + pStart.pX.ToString() + "\r\n PointXYZR.y=" + pStart.pY.ToString() + "\r\n PointXYZR.z= " + pStart.pZ.ToString() + "\r\n PointXYZR.Rx=" + pStart.pRx.ToString() + "\r\n PointXYZR.Ry=" + pStart.pRy.ToString() + "\r\n PointXYZR.Rz= " + pStart.pRz.ToString()); } var visual3D = rawresult.VisualHit; //使用visual3D作为命中的模型 if (visual3D != null) //如果不为空,即确实命中了某一个模型 { //开启点选,选择当前点击的三角序号 //if (TrajGlobalParam.SelectClickPaint3D) //{ // for (int i = 0; i < 1500; i++) // { // if (MVpaint3Ds[i] == visual3D) // { // if (TrajGlobalParam.SelectClickCtrlDown) // { // //添加当前点选的序号到列表中 // TrajGlobalParam.SelectedIndexList.Add(i); // ShowPointsSelectted(TrajGlobalParam.SelectedIndexList); // ListView.SelectedItems.Clear(); // List<int> listPcTmp = new List<int>(TrajGlobalParam.SelectedIndexList); // for (int j = 0; j < listPcTmp.Count; j++) // { // //listPcTmp[j] = listPcTmp[j]; // ListView.SelectedItems.Add(ListView.Items[listPcTmp[j]]); // } // } // else // { // ListView.SelectedIndex = i; // } // //messageShow(i.ToString()); // } // } // //button_SelectDoorPic.Content = "点选"; // //GlobalParam.SelectClickPaint3D = false; // //if (vp.FindName("BoxTita10_1") == visual3D) //用FindName方法进行检索。如果相等,执行一些事件 // //{ // // MessageBox.Show("BoxTita10_1"); // //} // /* // * 可以根据自行添加 // */ //} return(HitTestResultBehavior.Stop); } } return(HitTestResultBehavior.Continue); }
HitTestResultBehavior CollectAllVisuals_Callback(HitTestResult result) { if (result == null || result.VisualHit == null) return HitTestResultBehavior.Stop; hitTestList.Add(result.VisualHit); return HitTestResultBehavior.Continue; }
HitTestResultBehavior HitTestResultCallback(HitTestResult res) { return HitTestResultBehavior.Continue; }
/// <summary> /// Callback for hit test results. /// </summary> /// <param name="result"></param> /// <returns></returns> private HitTestResultBehavior ResultCallback(HitTestResult result) { if (result != null) { visualHit = result.VisualHit; } return HitTestResultBehavior.Stop; }
private HitTestResultBehavior HitTestCallBack(HitTestResult result) { IntersectionDetail intersectionDetail = (result as GeometryHitTestResult).IntersectionDetail; Polygon resulting = result.VisualHit as Polygon; if (resulting != null && intersectionDetail == IntersectionDetail.Intersects) { hitlist.Add(resulting); } else if (resulting != null && intersectionDetail == IntersectionDetail.FullyContains) { hitlist.Add(resulting); } else if (resulting != null && intersectionDetail == IntersectionDetail.FullyInside) { hitlist.Add(resulting); } return HitTestResultBehavior.Continue; }
// Return the result of the hit test to the callback. public HitTestResultBehavior MyHitTestResult(HitTestResult result) { // Add the hit test result to the list that will be processed after the enumeration. if (!hitResultsList.Contains(result.VisualHit)) { hitResultsList.Add(result.VisualHit); } // Set the behavior to return visuals at all z-order levels. return HitTestResultBehavior.Continue; }
private static HitTestResultBehavior _HitTestResult(HitTestResult result) { HitTestResults.Add(result); return HitTestResultBehavior.Continue; }
/// <summary> /// Hit test Result /// </summary> /// <param name="rawresult">Result Parameter</param> /// <returns></returns> private HitTestResultBehavior HTResult(HitTestResult rawresult) { RayHitTestResult rayResult = rawresult as RayHitTestResult; if (rayResult != null) { RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as RayMeshGeometry3DHitTestResult; if (rayMeshResult != null && rayMeshResult.VisualHit.GetType().Name == "ModelVisual3D") { hitgeo = rayMeshResult.ModelHit as GeometryModel3D; joint = Session.CurrentSession.CurrentProject.CurrentModel3D.Joints.FindJointByMatrix(hitgeo.Transform.Value); if (joint != null) { targetModel = Session.CurrentSession.CurrentProject.CurrentModel3D.Content.Find(hitgeo); BaseOffsetX = hitgeo.Transform.Value.OffsetX; BaseOffsetY = hitgeo.Transform.Value.OffsetY; BaseOffsetZ = hitgeo.Transform.Value.OffsetZ; } else hitgeo = null; } else hitgeo = null; } return HitTestResultBehavior.Stop; }
private static HitTestResultBehavior _HitTestResultGeometry(HitTestResult result) { IntersectionDetail intersectionDetail = ((GeometryHitTestResult)result).IntersectionDetail; switch (intersectionDetail) { case IntersectionDetail.FullyContains: HitTestResults.Add(result); return HitTestResultBehavior.Continue; case IntersectionDetail.Intersects: HitTestResults.Add(result); return HitTestResultBehavior.Continue; case IntersectionDetail.FullyInside: HitTestResults.Add(result); return HitTestResultBehavior.Continue; default: return HitTestResultBehavior.Stop; } }
internal HitTestResultBehavior HitTestResult(HitTestResult result) { _hitResult = result; return HitTestResultBehavior.Stop; }
/// <summary> /// 点击命中测试事件 /// </summary> /// <param name="rawresult"></param> /// <returns></returns> public HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult) { RayHitTestResult rayResult = rawresult as RayHitTestResult; if (rayResult != null) { //rayResult.ModelHit RayMeshGeometry3DHitTestResult raymeshresult = rayResult as RayMeshGeometry3DHitTestResult; var visual3D = rayResult.ModelHit; //使用visual3D作为命中的模型 Point3D hitPoint = rayResult.PointHit; if (visual3D != null) //如果不为空,即确实命中了某一个模型 { //if (hitPoint != null && // (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))) //{ // MoveControl(hitPoint); //} //else //{ //if (viewport.FindName("Box009") == visual3D) //用FindName方法进行检索。如果相等,执行一些事件 //{ // AxisRatationEvent(axisRotation, raymeshresult, new Vector3D(-1, 0, -1));//此处执行了一个小动画,可以根据需要进行修改。 //} //else if (viewport.FindName("Box013") == visual3D) //{ // //MainWindow // ScaleEvent(scaleControl); //} //else if (viewport.FindName("Box014") == visual3D) //{ // AxisRatationEvent(axisRotation1, raymeshresult, new Vector3D(-1, 0, 0)); //} //else if (viewport.FindName("Box015") == visual3D) //{ // AxisRatationEvent(axisRotation2, raymeshresult, new Vector3D(-1, 0, 1)); //} //} if (mode == ControlMode.Set && !string.IsNullOrEmpty(visual3D.GetName())) { InitSetShow(mouseP, visual3D.GetName()); GeometryModel3D v = visual3D as GeometryModel3D; string xx = v.GetName(); if (v != null) { setModelColor(v, new SolidColorBrush(Colors.Red)); } } else { if (!string.IsNullOrEmpty(visual3D.GetName()) && (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))) { InitInfoShow(mouseP, visual3D.GetName()); } } return(HitTestResultBehavior.Stop); } else { if (show != null) { show.Close(); show = null; } if (locset != null) { locset.Close(); locset = null; } } } return(HitTestResultBehavior.Continue); }