Windowscommunitytoolkit: Create a Canvas that support Text (Like RichEditBox) and Inking (Like InkCanvas)

Created on 25 Oct 2017  路  14Comments  路  Source: windows-toolkit/WindowsCommunityToolkit

I'm submitting a...

  • Feature request

Description

Link to original issue #1081

It is very difficult to Create a Custom RichEditBox with all the basic features Like Text Formatting, Bullets and numbering, Support for Inking Like OneNote and also to support adaptive layout, that's too much work for basic Text editing. To make it easy we need two controls

  1. Toolbar for text formatting - We have created it already (Thanks to @WilliamABradley )
  2. Canvas that support Text (Like RichEditBox) and Inking (Like InkCanvas)

Control feature request

  • [ ] Infinite Canvas
  • [ ] Texting
  • [ ] Inking
  • [ ] Scrolling
  • [ ] Zoom In and Up like OneNote or MS Word - (Suggested by @nmetulev - orginal commented)
  • [ ] Virtualization (Suggested by @nmetulev - orginal commented)
  • [ ] File Format to store (Suggested by @WilliamABradley - orginal commented)
  • [ ] Ability to manipulate objects (select, drag, rotate, resize) (#854)

UserVoice link

Create a Custom RichEditBox with all the basic features Like Text Formatting, Support for Inking Like OneNote

This issue has more than 55 votes

controls help wanted in progress

All 14 comments

The requirements here are to build an Infinite Canvas that supports:

  • [ ] inking
  • [ ] rich text
  • [ ] scroll and zoom
  • [ ] virtualization

Open to anyone that wants to pick this up.

@nmetulev

scroll and zoom

What do mean by zoom? no one will zoom in a text editor (OR) do you meant allow devs to scale the whole canvas something like MS Word.

winword_2017-10-26_13-23-52

I have created a checklist in my post. Please edit it if there are any future ideas.

Wouldn't the format of things like this require a special Markup or something to store such output?
Microsoft obviously uses the Proprietary Office Formats such as DocX, etc.

Replicating a control like this would be a massive undertaking, wouldn't it?
RTF doesn't have the capability to store Ink does it?

@Vijay-Nirmal, correct on zoom. For example, OneNote allows you to zoom in and out of the canvas

@WilliamABradley, agree, this will be more complex then most other controls in the toolkit, but not by much. There will be a need for a custom format, but shouldn't be too complex. Quick approach would be to store the RTF and inking separately and just keep track of them and their location in a json/xml.

@nmetulev What is the use of virtualization in this control?

Canvas such as this that can have infinite size can create performance issues if you keep all the content in memory, especially if there is a lot of content outside of the screen. Virtualization allows to only keep the UI in memory that is on screen (and a bit off screen) and still be able to scroll, zoom, and do everything else

Middle button click to scroll

gif

Edit: Maybe we should create a ScrollViewer Extension to do this. I will create a separate issue regarding this.

Seems like an interesting challenge :)

@nmetulev Is there a restriction against using an external package to render such a control? Microsoft.Win2D seems ideal since it can render ink as well as text.

None at all, we are already using Win2D for some of the animation effects.

I agree, Win2D would be the way to go here, especially in combination with the CompositionVirtualDrawingSurface

Wanted to call out #854 and #490 which seem somewhat related to this type of creative canvas.

@michael-hawker, agree, I added it to the list above :)

is there still interest in this? I personally would love to see something like this.

Yeah, we're working on this feature and hopefully we will ship it in the next release.

Was this page helpful?
0 / 5 - 0 ratings