@kenable811
Excelの初期形状には必要な矢印がありません。回転することで目的を達成する必要があります。それでも回転せずに実現するには、必要な矢印を画像にしてExcelに追加することができます。
@kenable811
回転後も矢印が同じ位置を指すようにしたい場合。その場合、2 次元座標系内の点を特定の点を中心に回転させてから、元の位置に戻すことで問題を解決できます。
参照コードは次のとおりです。
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
Shape arrowOri = sheet.Shapes.AddAutoShape(AutoShapeType.LeftArrow, 5, 0, 5, 0, 30, 30);
Shape arrow = sheet.Shapes.AddAutoShape(AutoShapeType.LeftArrow, 5, 0, 5, 0, 30, 30);
arrow.RotationAngle = 45;
//Get the rotation center
float cx = arrow.X + arrow.Width / 2;
float cy = arrow.Y + arrow.Height / 2;
//Get the arrow position before rotation
PointF oriPoint = new PointF(arrow.X, cy);
PointF[] points = new PointF[] { new PointF(arrow.X, cy) };
//Get the arrow position after rotation
Matrix matrix = new Matrix();
matrix.RotateAt(45, new PointF(cx, cy));
matrix.TransformPoints(points);
//Compensation moving distance
arrow.X -= (int)(points[0].X - oriPoint.X + 0.5f);//
arrow.Y -= (int)(points[0].Y - oriPoint.Y + 0.5f);//