Legend Icon to be PointMark Figure

Thread is closed for posting
7 posts, 1 answers
  1. Jonathan
    Jonathan avatar
    92 posts
    Member since:
    Feb 2007

    Posted 15 Aug 2008 Link to this post

    Hello,

    I have a line chart which uses different PointMark Figures (Cross, Star etc.) depending on what lines are displayed from a custom list.  However, on the legend I always get a circle as the icon.  How can I set the legend to show the PointMark Figure set on the appropriate line?

    I have read about setting the Appearance.FillStyle.FillSettings.BackgroundImage property, but the PointMark Figures are accessed by string and are as far as I can tell not static images.

    Thanks in advance.
  2. Answer
    Giuseppe
    Admin
    Giuseppe avatar
    2363 posts

    Posted 18 Aug 2008 Link to this post

    Hello Jonathan,

    You will need to manually add a custom legend item for each series and set its Figure property appropriately like this:

    ASPX:
    <telerik:RadChart ID="RadChart1" runat="server" OnBeforeLayout="RadChart1_BeforeLayout"
        <Series> 
            <telerik:ChartSeries Type="Line"
                <Appearance> 
                    <PointMark Visible="true" Figure="Cross" Dimensions-AutoSize="False" Dimensions-Width="10" 
                        Dimensions-Height="10" FillStyle-MainColor="Red" FillStyle-FillType="Solid"
                    </PointMark> 
                </Appearance> 
                <Items> 
                    <telerik:ChartSeriesItem YValue="10"
                    </telerik:ChartSeriesItem> 
                    <telerik:ChartSeriesItem YValue="50"
                    </telerik:ChartSeriesItem> 
                    <telerik:ChartSeriesItem YValue="30"
                    </telerik:ChartSeriesItem> 
                    <telerik:ChartSeriesItem YValue="20"
                    </telerik:ChartSeriesItem> 
                    <telerik:ChartSeriesItem YValue="40"
                    </telerik:ChartSeriesItem> 
                </Items> 
            </telerik:ChartSeries> 
        </Series> 
    </telerik:RadChart> 

    Code-behind:
    protected void RadChart1_BeforeLayout(object sender, EventArgs e) 
        RadChart1.Legend.Items.Clear(); 
     
        LabelItem legendItem = new LabelItem("Series 1"); 
        legendItem.Marker.Appearance.Figure = DefaultFigures.Cross; 
        legendItem.Marker.Appearance.FillStyle.MainColor = Color.Red; 
        legendItem.Marker.Appearance.FillStyle.FillType = FillType.Solid; 
        RadChart1.Legend.Items.Add(legendItem); 


    Hope this helps.


    Best wishes,
    Manuel
    the Telerik team

    Check out Telerik Trainer, the state of the art learning tool for Telerik products.
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Jonathan
    Jonathan avatar
    92 posts
    Member since:
    Feb 2007

    Posted 18 Aug 2008 Link to this post

    Thanks very much, thats exactly what I needed to know!
  5. Melissa
    Melissa avatar
    4 posts
    Member since:
    Aug 2011

    Posted 18 Aug 2011 Link to this post

    Hi admin,

    I really need to solve this.I am using telerik chart reporting chart in Visual studio 2008 using Asp.net
    and C#.I change the legend appearance property in the properties box, but when I rebuild the solution the
    changes will go back to its original state.So what I do is change the code behind instead.Some properties
    I manage to change but this itemMarkerApperance FIGURE I don't know what's the code to change.Please help!
    I am looking for the solution for a week already and this is my first time to ask in forum. This is my code:


                        Telerik.Reporting.Processing.Chart chart = (Telerik.Reporting.Processing.Chart)sender;
                        Telerik.Reporting.Chart chartDef = (Telerik.Reporting.Chart)chart.ItemDefinition;
                        Telerik.Reporting.Charting.ChartSeries s = chartDef.Series[0];
                        s.Clear();
                        s.Appearance.LegendDisplayMode = Telerik.Reporting.Charting.ChartSeriesLegendDisplayMode.ItemLabels;


                        s.PlotArea.Appearance.Dimensions.Margins.Bottom.Value = 10;
                        s.PlotArea.Appearance.Dimensions.Margins.Right.Value = 40;
                        s.PlotArea.Appearance.Dimensions.Margins.Left.Value = 0;
                        s.PlotArea.Appearance.Dimensions.Margins.Top.Value = 3;
                        s.PlotArea.Appearance.Dimensions.Paddings.Left.Value = 0;
                        s.PlotArea.Appearance.Dimensions.Paddings.Right.Value = 0;
                        s.Appearance.DiameterScale = 0.87;
                        

                        foreach (DataRow row in dtAsset.Rows)
                        {
                            Telerik.Reporting.Charting.ChartSeriesItem item = new Telerik.Reporting.Charting.ChartSeriesItem();
                            item.YValue = Convert.ToDouble(row["ValueAsset"].ToString());
                            item.Name = row["LegendTitleAsset"].ToString() + " (" + Convert.ToDouble(row["ValueAsset"].ToString())+ "%)";
                            s.Items.Add(item);
                        }
  6. Evgenia
    Admin
    Evgenia avatar
    1407 posts

    Posted 23 Aug 2011 Link to this post

    Hi Melissa,

    Do you by any case use a Skin different than the Default one? If this is the case - then you should turn off the SkinsOverrideStyles property of the Chart for your appearance modifications to take effect.
    If you are using the Default Skin, could you send us the code that you are setting in code-behind to change the LegendItemMarker figure so that we can get back to you with our suggestions?

    All the best,
    Evgenia
    the Telerik team

    Thank you for being the most amazing .NET community! Your unfailing support is what helps us charge forward! We'd appreciate your vote for Telerik in this year's DevProConnections Awards. We are competing in mind-blowing 20 categories and every vote counts! VOTE for Telerik NOW >>

  7. Melissa
    Melissa avatar
    4 posts
    Member since:
    Aug 2011

    Posted 23 Aug 2011 Link to this post

    Hi Evgenia,

    This is how Properties of my chart in the code behind,because as I said every time I rebuild the solution the changes won't take effect.
    I changed the size,margins etc. and I want to change the legend part, like resize the font, and the marker of it.In the code behind there it no property as ITEMMARKERAPPERANCE as what on the property box has, only marker,i dont know if its correct.With this code I am getting an error that the legend marker is read only.Thanks in  advance.

                        Telerik.Reporting.Processing.Chart chart = (Telerik.Reporting.Processing.Chart)sender;
                        Telerik.Reporting.Chart chartDef = (Telerik.Reporting.Chart)chart.ItemDefinition;
                        Telerik.Reporting.Charting.ChartSeries s = chartDef.Series[0];
                       
                        
                        s.Clear();
                        s.Appearance.LegendDisplayMode = Telerik.Reporting.Charting.ChartSeriesLegendDisplayMode.ItemLabels;

                        s.PlotArea.Appearance.Dimensions.Margins.Bottom.Value = 8;
                        s.PlotArea.Appearance.Dimensions.Margins.Right.Value = 30;
                        s.PlotArea.Appearance.Dimensions.Margins.Left.Value = 2;
                        s.PlotArea.Appearance.Dimensions.Margins.Top.Value = 5;
                        s.PlotArea.Appearance.Dimensions.Paddings.Left.Value = 0;
                        s.PlotArea.Appearance.Dimensions.Paddings.Right.Value = 0;
                        s.Appearance.DiameterScale = 0.90;
                        s.Appearance.PointRotationAngle = 100;
                        s.PlotArea.Chart.Legend.Marker = "Rectangle";  // read only
  8. Evgenia
    Admin
    Evgenia avatar
    1407 posts

    Posted 29 Aug 2011 Link to this post

    Hello Melissa,

    You should subscribe to BeforeLayout event of the chart to be able to change anything relating Legend Item Markers. Then you can set the Marker.Appearance.Figure to "Rectangle" like this:
    void MilestoneChart_BeforeLayout(object sender, EventArgs e)
       {
           for (int i = 0; i < MilestoneChart.Legend.Items.Count; i++)
           {
               MilestoneChart.Legend.Items[i].Marker.Appearance.Figure = "Rectangle";
           
       }

    Please note that the desired figure is set to Marker.Appearance.Figure property and not directly to the Marker itself.

    Greetings,
    Evgenia
    the Telerik team

    Thank you for being the most amazing .NET community! Your unfailing support is what helps us charge forward! We'd appreciate your vote for Telerik in this year's DevProConnections Awards. We are competing in mind-blowing 20 categories and every vote counts! VOTE for Telerik NOW >>

Back to Top
UI for ASP.NET Ajax is Ready for VS 2017