Например, сделал такой код:
Код: Выделить всё
public Report()
{
this.InitializeComponent();
var myPanel = new StiPanel();
myPanel.Left = 1;
myPanel.Top = 2;
myPanel.Width = 5;
myPanel.Height = 3;
myPanel.Brush = new StiEmptyBrush(); // Делаем фон прозрачным
myPanel.Border.Side = StiBorderSides.None; // Убираем границу
// Подписываемся на событие
myPanel.Painting += MyPanel_Painting;
// Добавляем panel на страницу ПОВЕРХ других компонентов
Page1.Components.Add(myPanel);
}
private void MyPanel_Painting(object sender, Stimulsoft.Report.Events.StiPaintEventArgs e)
{
MessageBox.Show("1");
var g = e.Graphics;
// Центр звезды и радиусы
float centerX = 5f; // 5 см от левого края
float centerY = 5f; // 5 см от верхнего края
float outerRadius = 2f; // Радиус внешних вершин
float innerRadius = 0.8f; // Радиус внутренних вершин
// Создаем массив для 10 точек (5 внешних + 5 внутренних вершин)
PointF[] points = new PointF[10];
// Угол шага между вершинами (в радианах)
double step = Math.PI / 5;
for (int i = 0; i < 10; i++)
{
double angle = Math.PI / 2 + i * step; // Начинаем с верхней вершины (π/2)
double radius = i % 2 == 0 ? outerRadius : innerRadius;
points[i] = new PointF(
centerX + (float)(radius * Math.Cos(angle)),
centerY + (float)(radius * Math.Sin(angle))
);
}
// Рисуем звезду
using (SolidBrush brush = new SolidBrush(Color.Gold))
using (Pen pen = new Pen(Color.Orange, 10f))
{
g.FillPolygon(brush, points);
g.DrawPolygon(pen, points);
}
}