public ModernPastelRenderer(Document document, ICanvasControl canvas) : base(document, canvas) { Resources.AddThemeColors( 0xF7977A, 0xF9AD81, 0xFDC68A, 0xFFF79A, 0xC4DF9B, 0xF26C4F, 0xF68E55, 0xFBAF5C, 0xFFF467, 0xACD372, 0xA2D39C, 0x82CA9D, 0x7BCDC8, 0x6ECFF6, 0x7EA7D8, 0x7CC576, 0x3BB878, 0x1ABBB4, 0x00BFF3, 0x438CCA, 0x8493CA, 0x8882BE, 0xBC8DBF, 0xF49AC2, 0xF6989D, 0x605CA8, 0x855FA8, 0xA763A8, 0xF06EA9, 0xF26D7D); }
public Win2DIcon(INodeIcon icon, ICanvasControl canvasControl) { Guard.NotNull(icon, nameof(icon)); name = icon.Name; LoadFile(icon, canvasControl.Device).ContinueWith(task => AttachBitmap(canvasControl, task)); }
protected override IDynamicInputer OnCreateInputer(PointBase drawObject, ICanvasControl canvasControl) { return(new LengthAndAngleDynamicInputer <PointBase>( drawObject, canvasControl, NumberBoxService.Current )); }
public Win2DRenderer CreateRenderer(Document document, ICanvasControl canvas) { Current = new ModernPastelRenderer(document, canvas); RendererCreated?.Invoke(this, EventArgs.Empty); return(Current); }
public IDynamicInputer CreateInputer(ICanvasControl canvasControl) { if (!(canvasControl.CurrentEditTool is SingleLineEditTool singleLineEditTool)) { return(null); } return(new LengthAndAngleDynamicInputer <SingleLineEditTool>(singleLineEditTool, canvasControl, NumberBoxService.Current)); }
private void AttachBitmap(ICanvasControl canvasControl, Task <CanvasBitmap> task) { canvasControl.Dispatcher.RunAsync(CoreDispatcherPriority.High, canvasControl.Invalidate).AsTask(); if (IsDisposed) { task.Result.Dispose(); } else { bitmap = task.Result; } }
public NumberBoxesDynamicInputer( NumberBoxInteractionHandlerContainer numberBoxInteractionHandler, ICanvasControl canvasControl, INumberBoxService numberBoxService ) : base(canvasControl) { _numberBoxService = numberBoxService ?? throw new ArgumentNullException(nameof(numberBoxService)); _numberBoxContainer = _numberBoxService.CreateContainer(); NumberBoxInteractionHandlerContainer = numberBoxInteractionHandler ?? throw new ArgumentNullException(nameof(numberBoxInteractionHandler)); Initialize(); }
/// <summary> /// Convert canvas coordinates to values /// </summary> /// <param name="panel"></param> /// <param name="input"></param> public virtual Point GetValues(ICanvasControl panel, Point input) { // Convert to values var deltaX = input.X / panel.W; var deltaY = input.Y / panel.H; // Percentage to values, Y is inverted input.X = MinIndex + (MaxIndex - MinIndex) * deltaX; input.Y = MaxValue - (MaxValue - MinValue) * deltaY; return(input); }
protected Win2DRenderer(Document document, ICanvasControl canvas) { Guard.NotNull(document, nameof(document)); Guard.NotNull(canvas, nameof(canvas)); this.canvas = canvas; this.document = document; scene = new Win2DScene(document, CreatePreviewNode(), CreateRenderNode); InitializeCanvas(); InitializeDocument(); resources = new Win2DResourceManager(canvas); }
protected override IDynamicInputer OnCreateInputer(LineBase line, ICanvasControl canvasControl) { if (line.MousePositionTracker.LastMouseDownPosition.IsAlmostEqualTo(line.Line2D.Start) || line.MousePositionTracker.LastMouseDownPosition.IsAlmostEqualTo(line.Line2D.End)) { var haveMousePositionWrapper = new HaveMousePositionTrackerForLineBase(line); var inputer = new LengthAndAngleDynamicInputer <HaveMousePositionTrackerForLineBase>(haveMousePositionWrapper, canvasControl, NumberBoxService.Current); inputer.Disposed += (sender, e) => haveMousePositionWrapper.Dispose(); return(inputer); } return(new LengthAndAngleDynamicInputer <LineBase>( line, canvasControl, NumberBoxService.Current )); }
/// <summary> /// Create label /// </summary> /// <param name="panel"></param> /// <param name="posH"></param> /// <returns></returns> private FrameworkElement CreateLabel(ICanvasControl panel, HorizontalAlignment posH) { var step = Composer.StepSize.Value; var label = new TextBlock { Text = "0.0", FontSize = FontSize, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = posH, Foreground = new SolidColorBrush(ColorFront), Margin = new Thickness(0), Padding = new Thickness(0) }; var container = new Border { Height = FontSize + step, Child = label, ClipToBounds = true, Margin = new Thickness(0), Padding = new Thickness(0), BorderThickness = new Thickness(0), Background = new SolidColorBrush(ColorBack) }; if (panel != null) { container.Width = panel.W; } switch (posH) { case HorizontalAlignment.Left: container.Padding = new Thickness(step * 2, 0, 0, 0); break; case HorizontalAlignment.Right: container.Padding = new Thickness(0, 0, step * 2, 0); break; case HorizontalAlignment.Center: container.Padding = new Thickness(step, 0, step, 0); break; } return(container); }
public IDynamicInputer CreateInputer(ICanvasControl canvasControl) { if (canvasControl == null) { throw new ArgumentNullException(nameof(canvasControl)); } if (canvasControl.CurrentEditTool == null) { return(null); } if (canvasControl.CurrentEditTool.GetType() != typeof(TEditTool)) { return(null); } return(OnCreateInputer(canvasControl, (TEditTool)canvasControl.CurrentEditTool)); }
/// <summary> /// Convert values to canvas coordinates /// </summary> /// <param name="panel"></param> /// <param name="input"></param> public virtual Point GetPixels(ICanvasControl panel, Point input) { // Clip input.X = Math.Min(Math.Max(MinIndex, input.X), MaxIndex); input.Y = Math.Min(Math.Max(MinValue, input.Y), MaxValue); // Convert to device pixels var deltaX = (input.X - MinIndex) / (MaxIndex - MinIndex); var deltaY = (input.Y - MinValue) / (MaxValue - MinValue); var deltaW = panel.W; var deltaH = panel.H; // Percentage to pixels, Y is inverted input.X = deltaW * deltaX; input.Y = deltaH - deltaH * deltaY; return(input); }
/// <summary> /// 当且仅当画布中的特定类型的一个且只有一个编辑对象在被编辑时, /// 本方法才可能返回特定的动态输入处理器; /// 返回的动态输入处理器具体类型,将在<see cref="OnCreateInputer(TDrawObject, ICanvasControl)"/>中实现; /// </summary> /// <param name="canvasControl"></param> /// <returns></returns> public IDynamicInputer CreateInputer(ICanvasControl canvasControl) { //编辑工具需为空; if (canvasControl.CurrentEditTool != null) { return(null); } //获取所有正在被编辑的绘制对象; var allEditingDrawObjects = canvasControl.GetAllVisibleDrawObjects(). Where(p => p.IsSelected && p.IsEditing). Select(p => p as TDrawObject).Where(p => p != null); //当且仅当存在一个时,才能返回; if (allEditingDrawObjects.Count() != 1) { return(null); } var editingDrawObject = allEditingDrawObjects.First(); return(OnCreateInputer(editingDrawObject, canvasControl)); }
protected override IDynamicInputer OnCreateInputer(ICanvasControl canvasControl, CopyEditTool editTool) { return(new LengthAndAngleDynamicInputer <CopyEditTool>(editTool, canvasControl, NumberBoxService.Current)); }
public LengthAndAngleDynamicInputer(THaveMousePositionTracker haveMousePositionTracker, ICanvasControl canvasControl, INumberBoxService numberBoxService) : base( LengthAndAngleNumContainerForMouseTrackable <THaveMousePositionTracker> . CreateFromHaveMousePositionTracker(haveMousePositionTracker, canvasControl.CanvasProxy), canvasControl, numberBoxService ) { }
protected abstract IDynamicInputer OnCreateInputer(ICanvasControl canvasControl, TEditTool editTool);
/// <summary> /// Transform coordinates /// </summary> /// <param name="panel"></param> /// <param name="index"></param> /// <param name="value"></param> /// <returns></returns> public virtual Point GetPixels(ICanvasControl panel, double index, double value) { return(GetPixels(panel, new Point(index, value))); }
protected abstract IDynamicInputer OnCreateInputer(TDrawObject drawObject, ICanvasControl canvasControl);
public Win2DResourceManager(ICanvasControl canvas) { Guard.NotNull(canvas, nameof(canvas)); this.canvas = canvas; }
public RoundDiameterTwoPointsEditDynamicInputer(RoundDiameterTwoPointsEditTool roundDiameterTwoPointsEditTool, ICanvasControl canvasControl, INumberBoxService numberBoxService) : base(roundDiameterTwoPointsEditTool, canvasControl, numberBoxService) { }
public CanvasControlDynamicInputerBase(ICanvasControl canvasControl) { CanvasControl = canvasControl ?? throw new ArgumentNullException(nameof(canvasControl)); }
public EditToolDynamicInputerGenericBase(ICanvasControl canvasControl) : base(canvasControl) { this.EditTool = (canvasControl.CurrentEditTool as TEditTool) ?? throw new InvalidCastException(); }