Hello, we are developing a finance application that contains sciChart. Our main chart and optionally RSI, MACD etc. There are indicators. I want the user to screenshot and share the graph and the indicators, but I’m having trouble doing this. Although I tried more than one way for this, I encountered different problems in all of them.
First of all, I take a screenshot with the createBitmap and Canvas method of the Layout where my graphics are located, but the graphic contents are not visible in the screenshot content.
As the second method, I tried the exportToBitmap method in sciChart, but here I only take a screenshot of 1 chart, I cannot take a screenshot of a graph + RSI + MACD at the same time. As another problem, the opening, closing, high, etc. of the parity on the chart. The texts containing the data are not visible in the screenshot.
Below I will share the screenshots I took with both the first method and the second method, the image on the phone at that moment, and the codes I used.
What I wanted to use was to take a screenshot of more than one graph and the data on it at the same time as in the first method. How can I do that?
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); view.draw(canvas);
You’re using the right approach for screenshotting a single surface, but you may get a blank screen with this method if you try to export a parent ViewGroup.
Here’s an excerpt from our Android Chart Documentation:
Export ViewGroup which contains ScichartSurface
By default SciChartSurface can be used with different IRenderSurface
implementations. Some of them (e.g. RenderSurfaceGL which uses OpenGL
for rendering of its content) won’t be visible when you call draw() on
parent ViewGroup. So if you need to export ViewGroup which contains
SciChartSurface then you need to switch to Canvas based RenderSurface
// Assume a surface has been created and configured somewhere surface.setRenderSurface(new RenderSurface(getContext()));
Try this approach in combination with ViewGroup.draw()
Don’t forget to set the RenderSurface back to the OpenGL renderer after calling viewGroup.draw() using code like this: