public VisualGraphics DrawVisual(GraphicsBase graphics) { VisualGraphics visual = VisualFactory.Create(graphics); this.VisualList.Add(visual); this.AddVisualChild(visual); // 该函数只会把DrawableVisual和DrawableVisualLayer关联起来,在渲染的时候并不会真正渲染。关联的目的是为了做命中测试(HitTest)。 visual.Render(); return(visual); }
/// <summary> /// 当前选中的Visual改变的时候被调用 /// 保证previouseSelected和selectedVisual都不为空 /// </summary> /// <param name="previouseSelected"></param> /// <param name="selectedVisual"></param> private void ProcessSelectedVisualChanged(VisualGraphics previouseSelected, VisualGraphics selectedVisual) { if (previouseSelected == selectedVisual) { return; } if (previouseSelected != null) { if (previouseSelected != selectedVisual) { previouseSelected.IsSelected = false; previouseSelected.Render(); selectedVisual.IsSelected = true; selectedVisual.Render(); } } else { selectedVisual.IsSelected = true; selectedVisual.Render(); } }
/// <summary> /// 保存图形里输入的文本 /// </summary> private void StopVisualInputState(VisualGraphics visual) { if (this.visualState != Visuals.VisualState.InputState) { return; } if (visual == null) { return; } visual.Graphics.TextProperties.Text = this.TextBoxEditor.Text; visual.Render(); // 刷新文本信息 this.TextBoxEditor.Text = null; this.TextBoxEditor.Visibility = Visibility.Collapsed; }