作成日: 2020/11/25 最終更新日: 2020/11/25
文書種別
使用方法
詳細
シリーズのSymbolMarkerプロパティをStarに設定した場合、現在の仕様では、星形ではなく円形として描画され、シンボルサイズも大きくなります。
サイズを抑え、名称から期待される星形として表示させるためには、SymbolRenderingイベント内で、星形の独自画像をマーカーとして描画する方法が考えられます。
以下に、星形の独自画像を持つ透過PNGファイルを使用するサンプルを記載します。
※シリーズ12で、SymbolMarker.Starのシンボルを設定しています。
◎サンプルコード(VB)
サイズを抑え、名称から期待される星形として表示させるためには、SymbolRenderingイベント内で、星形の独自画像をマーカーとして描画する方法が考えられます。
以下に、星形の独自画像を持つ透過PNGファイルを使用するサンプルを記載します。
※シリーズ12で、SymbolMarker.Starのシンボルを設定しています。
◎サンプルコード(VB)
Imports C1.Chart
Imports C1.Win.Chart
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.FlexChart1.Series.Clear()
Dim i As Integer = 0
For i = 0 To 14
Dim dt = New DataTable
dt.Columns.Add("X", GetType(System.Int32))
dt.Columns.Add("Y", GetType(System.Int32))
Dim series = New Series
series.ChartType = ChartType.LineSymbols
series.Binding = "Y"
series.BindingX = "X"
series.Name = i.ToString
series.SymbolMarker = CType(i, SymbolMarker)
series.SymbolStyle.StrokeWidth = 1
series.SymbolStyle.StrokeColor = Color.Black
AddHandler series.SymbolRendering, AddressOf Series_SymbolRendering
Dim x = 1
For x = 0 To 11
dt.Rows.Add(x, i)
x = (x + 1)
Next
series.DataSource = dt
FlexChart1.Series.Add(series)
Next
End Sub
Dim symbolImage As Image = Image.FromFile("..¥..¥star01_trans.png")
Private Sub Series_SymbolRendering(ByVal sender As Object, ByVal e As RenderSymbolEventArgs)
If (e.Series.SymbolMarker = SymbolMarker.Star) Then
' 既定の動作のキャンセル
e.Cancel = True
' 独自の画像をデータ点として描画
Dim rect As RectangleF = New RectangleF(e.Point, symbolImage.Size)
rect.Offset(-symbolImage.Width / 2, -symbolImage.Height / 2)
e.Engine.DrawImage(symbolImage, rect.X, rect.Y, symbolImage.Width, symbolImage.Height)
End If
End Sub
End Class
◎サンプルコード(C#)using C1.Chart;
using C1.Win.Chart;
namespace _prj_FlexChart_Star
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
flexChart1.Series.Clear();
for (int i = 0; i < 15; i++)
{
var dt = new DataTable();
dt.Columns.Add("X", typeof(int));
dt.Columns.Add("Y", typeof(int));
var series = new Series();
series.ChartType = ChartType.LineSymbols;
series.Binding = "Y";
series.BindingX = "X";
series.Name = i.ToString();
series.SymbolMarker = (SymbolMarker)i;
series.SymbolStyle.StrokeWidth = 1;
series.SymbolStyle.StrokeColor = Color.Black;
series.SymbolRendering += Series_SymbolRendering;
for (var x = 1; x <= 12; x++)
{
dt.Rows.Add(x, i);
}
series.DataSource = dt;
flexChart1.Series.Add(series);
}
}
private Image symbolImage = Image.FromFile("..¥¥..¥¥star01_trans.png");
private void Series_SymbolRendering(object sender, RenderSymbolEventArgs e)
{
if (e.Series.SymbolMarker == SymbolMarker.Star)
{
// 既定の動作のキャンセル
e.Cancel = true;
// 独自の画像をデータ点として描画
RectangleF rect = new RectangleF(e.Point, symbolImage.Size);
rect.Offset(-symbolImage.Width / 2, -symbolImage.Height / 2);
e.Engine.DrawImage(symbolImage, rect.X, rect.Y, symbolImage.Width, symbolImage.Height);
}
}
}
}
旧文書番号
86217