RadChartView not showing bars when saved to file

5 posts, 0 answers
  1. dd
    dd avatar
    4 posts
    Member since:
    Mar 2010

    Posted 04 Mar 2013 Link to this post

    I have noticed some strange behavior when I try to save a chart as an image.  The x and y axis show up with labels and the correct range but there are no bars.

        Private Function GetDummyList() As BindingList(Of RateShockData)
            Dim l As New BindingList(Of RateShockData)
            l.Add(New RateShockData("+300", "-13.9"))
            l.Add(New RateShockData("+200", "-9"))
            l.Add(New RateShockData("+100", "-3.9"))
            l.Add(New RateShockData("even", "0"))
            l.Add(New RateShockData("-100", "-.2"))
            l.Add(New RateShockData("-200", "1"))
            l.Add(New RateShockData("-300", "2.2"))
            Return l
        End Function
     
        Private Function BuildChart()
            Dim c1 As New RadChartView
     
            Dim bs As New BarSeries
            bs.Name = "Market % Change"
            bs.ValueMember = "MVPctChange"
            bs.CategoryMember = "BPChange"
            bs.DataSource = GetDummyList()
     
            c1.Series.Clear()
            c1.Series.Add(bs)
     
            Dim bitM As New Bitmap(c1.Width, c1.Height)
            c1.DrawToBitmap(bitM, c1.Bounds)
     
            Dim imageFileName As String = Guid.NewGuid.ToString + ".jpg"
            bitM.Save(imageFileName, Drawing.Imaging.ImageFormat.Jpeg)
        End Function
     
        Private Sub RadButton2_Click(sender As Object, e As EventArgs) Handles RadButton2.Click
            BuildChart()
     
        End Sub
     
     
    Public Class RateShockData
     
        Property BPChange As String
        Property MVPctChange As String
     
        Public Sub New(bpc As String, mvpc As String)
            BPChange = bpc
            MVPctChange = mvpc
        End Sub
     
    End Class

    The above code is what I used to produce this.  I am using version 2012.2.726.40.

    I discovered that if I give the chart a palette, this issue goes away.

    c1.Area.View.Palette = KnownPalette.Grayscale

  2. Ivan Petrov
    Admin
    Ivan Petrov avatar
    701 posts

    Posted 07 Mar 2013 Link to this post

    Hello David,

    Thank you for writing.

    The reason why the bars do not have a style is because we use animations when we apply the theme. The animations fades in the colors and in your case the animation has just started when you draw the control to the bitmap. To workaround this you can disable the animations. Here is how to modify your code:
    Private Function BuildChart()
            ThemeResolutionService.AllowAnimations = False
     
            Dim c1 As New RadChartView
      
            Dim bs As New BarSeries
            bs.Name = "Market % Change"
            bs.ValueMember = "MVPctChange"
            bs.CategoryMember = "BPChange"
            bs.DataSource = GetDummyList()
      
            c1.Series.Add(bs)
      
            Dim bitM As New Bitmap(c1.Width, c1.Height)
            c1.DrawToBitmap(bitM, c1.Bounds)
      
            Dim imageFileName As String = Guid.NewGuid.ToString + ".jpg"
            bitM.Save(imageFileName, Drawing.Imaging.ImageFormat.Jpeg)
        End Function

    I hope this will help. Should you have further questions, I would be glad to help.

    Regards,
    Ivan Petrov
    the Telerik team
    WinForms Q1 2013 boasts PivotGrid, PDF Viewer, Chart enhancements and more. Check out all of the latest highlights.
  3. UI for WinForms is Visual Studio 2017 Ready
  4. Michael
    Michael avatar
    4 posts
    Member since:
    Jun 2012

    Posted 15 Aug 2013 Link to this post

    Ivan,

    The (ThemeResolutionService.AllowAnimations = False. ) solution worked great for a barseries within the RadChartView when not within a visual form. However the same does not seem to work when using the pieseries. The only way in which I can get the pie chart to draw and paint the pie is to give it a known palette. Is there another solution in this case?

    What is the default palette of the chart when in a pieseries mode?

    Thanks

    Mike C.
  5. Michael
    Michael avatar
    4 posts
    Member since:
    Jun 2012

    Posted 15 Aug 2013 Link to this post

    Ivan,

    I was able to stop loading a known palette within the radchartview and get the pie chart to draw within a bitmap by calling the LoadElementTree of the radchartview. The bitmap now displays the pie chart, however I no longer get the Legend to draw. Prior to using the LoadElementTree method the legend was drawn within the bitmap , however I was not able to loop through the legend items to modify them in any manner as the count indicated 0.

    After calling the LoadElementTree method I can loop through the Legend Items as the count now indicates non zero. The legend simply no longer draws within the bitmap


    Thanks

    Mike C
  6. Ivan Petrov
    Admin
    Ivan Petrov avatar
    701 posts

    Posted 20 Aug 2013 Link to this post

    Hello David,

    Thank you for writing back.

    The best way to get a control to look as it would normally do is to put it in its "natural environment". You can add a control to a form Controls collection, force a layout, draw it to a bitmap and remove it. This will not be drawn in the UI as it will happen pretty fast but will allow all the mechanism in the control to function properly.

    I have attached an example project with two buttons, one exports the bar chart from your first post with legend and the second exports a pie chart again with a legend.

    I hope this will be useful. Feel free to write back with further questions.

    Regards,
    Ivan Petrov
    Telerik
    TRY TELERIK'S NEWEST PRODUCT - EQATEC APPLICATION ANALYTICS for WINFORMS.
    Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
    Sign up for Free application insights >>
Back to Top
UI for WinForms is Visual Studio 2017 Ready