public static ConsoleShapePart CreateShape(string shapeType, int[] param, Color color, Color bcolor, bool colorchanged) { var type = shapeType.ToLower(); colorchanged = colorchanged || color != Config.ForeColor; var sb = new StringBuilder(); sb.Append("<shape type='"); sb.Append(type); sb.Append("' param='"); for (var i = 0; i < param.Length; i++) { sb.Append(param[i].ToString()); if (i < param.Length - 1) { sb.Append(", "); } } sb.Append("'"); if (colorchanged) { sb.Append(" color='"); sb.Append(HtmlManager.GetColorToString(color)); sb.Append("'"); } if (bcolor != Config.FocusColor) { sb.Append(" bcolor='"); sb.Append(HtmlManager.GetColorToString(bcolor)); sb.Append("'"); } sb.Append(">"); ConsoleShapePart ret = null; var lineHeight = Config.FontSize; var paramPixel = new float[param.Length]; for (var i = 0; i < param.Length; i++) { paramPixel[i] = (float)param[i] * lineHeight / 100f; } RectangleF rectF; switch (type) { case "space": if (paramPixel.Length == 1 && paramPixel[0] >= 0) { rectF = new RectangleF(0, 0, paramPixel[0], lineHeight); ret = new ConsoleSpacePart(rectF); } break; case "rect": if (paramPixel.Length == 1 && paramPixel[0] > 0) { rectF = new RectangleF(0, 0, paramPixel[0], lineHeight); ret = new ConsoleRectangleShapePart(rectF); } else if (paramPixel.Length == 4) { rectF = new RectangleF(paramPixel[0], paramPixel[1], paramPixel[2], paramPixel[3]); //1820a12 サイズ上限撤廃 if (rectF.X >= 0 && rectF.Width > 0 && rectF.Height > 0) { // rectF.Y >= 0 && (rectF.Y + rectF.Height) <= lineHeight) ret = new ConsoleRectangleShapePart(rectF); } } break; case "polygon": break; } if (ret == null) { ret = new ConsoleErrorShapePart(sb.ToString()); } ret.AltText = sb.ToString(); ret.Color = color; ret.ButtonColor = bcolor; ret.colorChanged = colorchanged; return(ret); }