You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FillEllipse、DrawEllipse在椭圆内部绘制十字等标记?

在椭圆内部添加十字标记的实现方案

嗨,当然可以实现!你完全可以在现有椭圆绘制代码的基础上,借助GDI+的绘图API来添加十字标记——和你正在用的FillEllipse、DrawEllipse属于同一套工具链,非常顺手。

核心思路

十字标记的关键是先确定椭圆的中心点,然后以这个点为基准绘制水平和垂直两条线。具体步骤如下:

  1. 先执行你原有的椭圆绘制代码,确保椭圆先画好;
  2. 根据椭圆的bounds矩形计算中心点坐标;
  3. 定义十字线的长度(可以根据椭圆大小动态调整);
  4. 使用DrawLine方法绘制水平和垂直两条线,形成十字。

完整示例代码

// 你的原有椭圆绘制代码
g.FillEllipse(new SolidBrush(this.EllipseColor), bounds);
g.DrawEllipse(new Pen(this.ForeColor), bounds);

// 1. 计算椭圆的中心点
Point center = new Point(bounds.Left + bounds.Width / 2, bounds.Top + bounds.Height / 2);

// 2. 定义十字线的长度(这里取椭圆短轴的1/3,可按需调整)
int crossLineLength = Math.Min(bounds.Width, bounds.Height) / 3;

// 3. 创建画笔(建议用using自动释放资源,可自定义颜色、粗细)
using (Pen crossPen = new Pen(Color.DarkRed, 2))
{
    // 绘制水平横线:从中心向左延伸到向右延伸
    g.DrawLine(crossPen, center.X - crossLineLength, center.Y, center.X + crossLineLength, center.Y);
    // 绘制垂直竖线:从中心向上延伸到向下延伸
    g.DrawLine(crossPen, center.X, center.Y - crossLineLength, center.X, center.Y + crossLineLength);
}

细节调整建议

  • 十字线样式:如果需要更粗的线条、不同的颜色或者虚线效果,直接修改Pen的参数即可(比如new Pen(Color.Blue, 3)或者设置crossPen.DashStyle = DashStyle.Dash);
  • 自适应长度:示例中用Math.Min(bounds.Width, bounds.Height)/3来保证十字线不会超出椭圆边界,你也可以固定长度或者用其他比例;
  • 层级问题:一定要把十字绘制代码放在椭圆绘制之后,这样十字会叠加在椭圆上方,符合视觉需求。

内容的提问来源于stack exchange,提问作者Msorich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:26:37