C#中Graphics通过矩形画外切圆
时间: 2023-12-08 11:54:26 浏览: 167
要在C#中使用Graphics类画一个外切圆,可以按照以下步骤:
1. 定义一个矩形,该矩形将包含圆形。
2. 使用Graphics类的DrawEllipse方法来画一个圆。
3. 计算圆的半径,使其刚好与矩形相切。
下面是示例代码:
```
private void DrawCircle(Rectangle rect, Graphics graphics)
{
// 画矩形
graphics.DrawRectangle(Pens.Black, rect);
// 计算圆的半径
int radius = (int)(Math.Sqrt(Math.Pow(rect.Width, 2) + Math.Pow(rect.Height, 2)) / 2);
// 计算圆心坐标
int centerX = rect.Left + rect.Width / 2;
int centerY = rect.Top + rect.Height / 2;
// 画圆
graphics.DrawEllipse(Pens.Red, centerX - radius, centerY - radius, radius * 2, radius * 2);
}
```
在上面的代码中,我们首先使用DrawRectangle方法画一个矩形,然后计算圆的半径和圆心坐标,最后使用DrawEllipse方法画一个圆。你可以调整矩形的大小和位置,来改变外切圆的大小和位置。
相关问题
python用turtle画外切圆
以下是使用turtle模块绘制外切圆的Python代码示例:
```python
import turtle
import math
# 设置绘图窗口大小
turtle.setup(500, 500)
# 创建画笔
pen = turtle.Turtle()
# 设置画笔颜色和粗细
pen.color("red")
pen.pensize(2)
# 计算外切圆半径
side_length = 100 # 正多边形边长
n = 6 # 正多边形边数
apothem = side_length / (2 * math.tan(math.pi / n)) # 正多边形内切圆半径
circumradius = side_length / (2 * math.sin(math.pi / n)) # 正多边形外接圆半径
# 绘制正多边形
pen.penup()
pen.goto(-side_length/2, -apothem)
pen.pendown()
for i in range(n):
pen.forward(side_length)
pen.left(360/n)
# 绘制外切圆
pen.penup()
pen.goto(0, circumradius)
pen.pendown()
pen.circle(circumradius)
# 隐藏画笔
pen.hideturtle()
# 显示绘图窗口
turtle.done()
```
运行上述代码将绘制一个六边形和其外切圆,结果如下图所示:
![外切圆](https://cdn.jsdelivr.net/gh/1078541234/CDN/blog/20210909130517.png)
c# UserControl OnPaint 画2个同心圆 在内圆中心画直线直线的长度为外圆的半径
在 C# 中,`UserControl` 是一种可自定义用户界面控件的基类,允许开发者创建可以独立使用的 UI 组件。如果你想要在 `OnPaint` 方法中绘制两个同心圆并在内圆中心画一条等长于外圆半径的直线,你可以按照以下步骤操作:
1. 首先,在 `UserControl` 类中,你需要重写 `OnPaint(PaintEventArgs e)` 方法,这是 Windows Forms 控件用来处理绘图事件的地方。
```csharp
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
// 设置绘图刷和颜色
Pen pen = new Pen(Color.Black, 2); // 线条笔
SolidBrush brush = new SolidBrush(Color.Gray); // 圆形填充色
// 获取控件的宽度和高度用于计算圆形大小
int width = this.Width;
int height = this.Height;
// 计算外圆的直径等于控件边长
int outerRadius = Math.Min(width, height) / 2;
// 内圆半径比外圆小一半
int innerRadius = outerRadius - (outerRadius / 2);
// 画外圆
e.Graphics.DrawEllipse(brush, innerRadius, innerRadius, outerRadius * 2, outerRadius * 2);
// 画内圆
e.Graphics.DrawEllipse(brush, innerRadius + pen.Width, innerRadius + pen.Width, outerRadius * 2 - pen.Width * 2, outerRadius * 2 - pen.Width * 2);
// 从内圆中心画直线到外圆边缘
Point center = new Point(width / 2, height / 2);
e.Graphics.DrawLine(pen, center.X, center.Y, center.X + outerRadius, center.Y);
// 更新图形
e.Graphics.Flush();
}
```
阅读全文