首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DrawEllipse:椭圆超出位图大小

DrawEllipse:椭圆超出位图大小
EN

Stack Overflow用户
提问于 2018-05-29 07:23:13
回答 1查看 239关注 0票数 0

我想用DrawEllipse在指定的Bitmap上绘制一个与位图相同大小的圆,但结果是该圆的边缘显示为剪裁。

为什么会出现这个问题?

代码语言:javascript
复制
Bitmap layer = new Bitmap(80, 80);
using (Graphics g = Graphics.FromImage(layer))
{
    using (Pen p = new Pen(Color.Black, 4))
    {
        g.DrawEllipse(p, new Rectangle(0, 0, layer.Width, layer.Height));
    }
}
pictureBox3.Size = new Size(100, 100);
pictureBox3.Image = layer;

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-29 07:29:43

默认情况下,画笔具有PenAlignment.Center

这意味着其宽度的一半将绘制在边界矩形之外。

您可以通过将其更改为PenAlignment.Inset来避免该问题

代码语言:javascript
复制
using (Pen p = new Pen(Color.Black, 4) { Alignment = PenAlignment.Inset})
{
    g.DrawEllipse(p, new Rectangle(0, 0, layer.Width, layer.Height));
}

更新:如果你想打开图形对象的平滑效果,你需要在笔触的两边增加1到2个像素作为抗锯齿像素。使用较小的边界矩形现在是无法避免的。但是……

代码语言:javascript
复制
Rectangle rect = new Rectangle(Point.Empty, layer.Size);
rect.Inflate(-1, -1);  // or -2

..should do..

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50574457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档