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

如何在C# PictureBox控件的四个角落绘制填充椭圆,修复右角不显示问题

问题原因

你绘制的第二个椭圆超出了PictureBox的可视区域,所以无法显示:

  • WinForm的GDI+绘制坐标系以控件左上角为(0,0)原点,横向X值向右递增,纵向Y值向下递增
  • pictureBox1.Width是控件的整体宽度,你从X坐标等于控件宽度的位置开始绘制宽5px的椭圆,整个椭圆都会落在控件右边界之外,自然看不到

修正方案

要绘制四个角落的椭圆,需要把椭圆自身的宽高计算进偏移量,调整后的代码如下:

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    // 椭圆的宽高,抽成变量方便后续修改
    int ellipseSize = 5;
    // 左上角
    e.Graphics.FillEllipse(Brushes.Purple, 0, 0, ellipseSize, ellipseSize);
    // 右上角:X坐标 = 控件宽度 - 椭圆宽度
    e.Graphics.FillEllipse(Brushes.Purple, pictureBox1.Width - ellipseSize, 0, ellipseSize, ellipseSize);
    // 左下角:Y坐标 = 控件高度 - 椭圆高度
    e.Graphics.FillEllipse(Brushes.Purple, 0, pictureBox1.Height - ellipseSize, ellipseSize, ellipseSize);
    // 右下角
    e.Graphics.FillEllipse(Brushes.Purple, pictureBox1.Width - ellipseSize, pictureBox1.Height - ellipseSize, ellipseSize, ellipseSize);
}

额外注意:如果你的PictureBox设置了非0的Padding或者边框,建议用pictureBox1.ClientSize.Width和pictureBox1.ClientSize.Height替换上面的Width和Height,可以排除边框、内边距的尺寸干扰,绘制更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:57:02