如何在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
相关产品推荐
相关产品推荐

