Comments (8)
Hi @destrugter,
I see how that would be useful, but am not sure whether it's going to be easy to implement. It might be as easy as providing a callback/event in OnAfterRenderAsync of the Diagram component, but I don't know for sure. Could you experiment with this and let me know?
Out of curiosity: how are you taking screenshots?
BR
Stefan
from blazor.diagrams.
Currently the way I'm doing it is calling ZoomToFit, awaiting a 1s Task, then using html2canvas to convert the element to a canvas, and then converting it to a blob, and finally converting that blob to a png and copying it to the clipboard.
from blazor.diagrams.
@destrugter id love to see how you have implemented this, so you are able to render a diagram to a PNG?
from blazor.diagrams.
@CliveBennett I used this JS called html2canvas. It works pretty well. The command I have after you have downloaded html2canvas is await html2canvas(document.querySelector("#" + id)).then(canvas => canvas.toBlob(blob => navigator.clipboard.write([new ClipboardItem({ 'image/png': blob })])));
from blazor.diagrams.
Awesome, appreciate that ill give it a go.
from blazor.diagrams.
I managed to get the copying of the diagram to a PNG working, thanks for the pointer.
But, because some of the diagrams that get generated can be quite large, I really need to have a dynamic sized image, so I can have a large image for the large ones, and a small image for the small ones.
Is there a property for the diagram class that would give me the max rendered width and height in pixels?, even if cropped on screen?
from blazor.diagrams.
@CliveBennett The code I was using was this:
private async Task GetDiagramScreenshot()
{
diagram.ZoomToFit();
await Task.Delay(1000);
image_url = await TakeScreenshot();
}
I am using the await Task.Delay(1000)
because I am unsure of when ZoomToFit is finished working, which is why I opened this issue in the first place. If I'm understanding you correctly, this should get you what you're after?
from blazor.diagrams.
@destrugter the issue is that a lot of our diagrams can render off screen as they are quite large, I use the little viewport control to enable people to scroll around the diagram.
This is an example of what they can look like
But I needed to grab the entire diagram in one hit onto a single image.
What I ended up doing was to change the containing div to 5000x5000 pix with JS prior to running Html2Canvas which then generates a large image with the diagram at the top, then I wrote some code to Crop the image to a sensible size by scanning the pixels for whitespace.
Works well (so far!) thanks again for the help
from blazor.diagrams.
Related Issues (20)
- Creating custom link HOT 6
- Diagram Does Not Display HOT 3
- Property Hidden HOT 2
- Questions HOT 2
- Disabling Custom Links HOT 3
- NodeLibrary with Code generated Nodes HOT 7
- additional arrow styles? HOT 2
- Is it possible to disable the function that lets you click on an object and link it to another? HOT 5
- Diagram LinkModified LinkBase param doesnt provide correct positions on source and node HOT 5
- Capture Drag Event of Node causes render to fail HOT 5
- Is there a way to make lines not lap over nodes during auto layout HOT 2
- Auto Layout after render HOT 1
- Panning on mobile HOT 2
- Allow custom middle point and link direction of AngleLink component HOT 6
- Adding container element/nesting of nodes HOT 1
- AutoLayout HOT 6
- Auto-Center after ZoomToFit HOT 7
- Improve documentation about how to change size of nodes.
- Add the ability to prevent remove node or link
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from blazor.diagrams.