如何在表格中间画一个圆以及如何找到圆心?

2023-12-25

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Test
{
    public partial class Form1 : Form
    {
        int x1, x2, wid = 100;

        public Form1()
        {
            InitializeComponent();

            x1 = this.Width / 2 ;
            x2 = this.Height / 2 ;
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {


            e.Graphics.DrawEllipse(Pens.Red, x1,x2, wid, wid);
        }
    }
}

我想在表格中间画一个简单的圆,然后我想画从圆中心出来的线。我该怎么做 ?


属性this.Width and this.Heightthis.Bounds它将自己描述为:

获取或设置控件的大小和位置,包括其 非客户端元素,在像素上,相对于父控件

这意味着您需要调整边框和标题栏的厚度。使用this.ClientRectangle避免了整个问题。

public partial class Form1 : Form
{
    int circleDiameter  = 100;

    public Form1()
    {
        InitializeComponent();
    }

     private void Form1_Paint(object sender, PaintEventArgs e)
    {

        Point CenterPoint = new Point()
        {
            X = this.ClientRectangle.Width/2,
            Y = this.ClientRectangle.Height/2
        };
        Point topLeft = new Point()
        {
            X=(this.ClientRectangle.Width - circleDiameter) / 2,
            Y=(this.ClientRectangle.Height - circleDiameter) / 2
        };
        Point topRight = new Point()
        {
            X=(this.ClientRectangle.Width + circleDiameter) / 2,
            Y=(this.ClientRectangle.Height - circleDiameter) / 2
        };
        Point bottomLeft = new Point()
        {
            X=(this.ClientRectangle.Width - circleDiameter) / 2,
            Y=(this.ClientRectangle.Height + circleDiameter) / 2
        };
        Point bottomRight = new Point()
        {
            X=(this.ClientRectangle.Width + circleDiameter) / 2,
            Y=(this.ClientRectangle.Height + circleDiameter) / 2
        };

         e.Graphics.DrawRectangle(Pens.Red, topLeft.X, topLeft.Y, circleDiameter, circleDiameter);
         e.Graphics.DrawLine(Pens.Red, CenterPoint, topLeft);
         e.Graphics.DrawLine(Pens.Red, CenterPoint, topRight);
         e.Graphics.DrawLine(Pens.Red, CenterPoint, bottomLeft);
         e.Graphics.DrawLine(Pens.Red, CenterPoint, bottomRight);
    }

    private void Form1_Resize(object sender, EventArgs e)
    {
        this.Invalidate();
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在表格中间画一个圆以及如何找到圆心? 的相关文章

随机推荐

  • 如何更改 CTabCtrl 选项卡颜色?

    你好 新年快乐 周四之前说是可以接受的 我正在尝试更改选项卡的颜色CTabCtrl班级 我正在尝试创建自己的 ReskinCTablCtrl 以便我可以在单独的类中调用它并在整个程序中轻松使用它 目前我可以更改背景颜色CTabCtrl但我无
  • MATLAB 库与现有库冲突 - CMake 崩溃

    我正在 Ubuntu 16 04 64 位机器上处理 C 代码 作为代码的一部分 我必须调用 Matlab 我使用 libmat 和 libmx 库来实现 当向 CMake 提供这些库的路径时 我收到 CMake 的警告 指出现有库可能会发
  • 如何正确pickle一个namedtuple实例

    我正在学习如何使用泡菜 我创建了一个命名元组对象 将其附加到一个列表中 并尝试腌制该列表 但是 我收到以下错误 pickle PicklingError Can t pickle
  • log4j:ERROR 转换日期时发生错误

    我在日志中发现了这个异常 log4j ERROR 转换日期时发生错误 java lang NullPointerException 在 java lang System arraycopy 本机方法 在 java lang Abstract
  • 在前端翻译我的 magento 自定义模块

    我已经做了一个 magento 自定义模块 我想为其进行翻译 我怎样才能做到这一点 而不创建另一个翻译模块 多谢 您可以使用内置的翻译方法并在模板中定义所有字符串 如下所示 如果您需要在类或块中使用字符串 您可以从辅助类中获取上下文 如下所
  • 连接两个表后访问所有数据并使用 linq 将它们分组

    我有两张桌子 TableA aId aValue TableB bId aId bValue 我想通过以下方式加入这两个表aId 然后从那里将它们分组bValue var result from a in db TableA join b
  • 添加一个新列并用 Oracle SQL 中另一列的一部分填充它

    我想在表中添加一个新列 并用另一列的最后 3 个字符填充它 两者都是 varchar 源列应保持不变 我想避免创建临时列 而是想了解如何在单个查询中执行此操作 谢谢 最好使用虚拟列 https oracle base com article
  • Ajax 侦听器事件 valueChange 似乎触发 onClick 而不是 onChange

    我有一个想要显示的嵌套问题列表 最初 我显示 1 级问题 然后根据用户对其父问题的回答显示子问题 所有问题都有一个单选按钮 有些问题有一个输入框 用于在用户选择 是 时显示附加信息 这是我的带有嵌套数据表的 JSF 代码 请注意 我已经取消
  • 克服 x86 idiv #DE 异常

    回复 x86 汇编语言 我有三个 32 位有符号数 n1 n2 和 n3 我想对 n1 乘以 n2 进行 imul 以获得 64 位带符号的结果 然后我想将该 64 位结果除以 n3 问题是 如果 64 位有符号结果足够大和 或 n3 足够
  • React 原生深度链接与 Facebook SDK 冲突

    我在我的react native应用程序中使用Facebook SDK 现在我还想添加对通用深度链接的支持 我按照此处的说明修改了我的应用程序委托 https developers facebook com docs ios getting
  • 使用 HttpServletRequest 获取请求发送者的 URL

    如何使用 HttpServletRequest 获取源域 源域是请求者的域 Thanks 你可以做任何一个 gets client browser s hostname String host request getRemoteHost O
  • 如何禁用按下按键时列表框自动选择项目

    我有一个列表框 我想在该列表框中复制并粘贴项目 复制和粘贴工作正常 但每次我按 Crtl C 时 都会自动选择以字母 C 开头的项目 可以禁用此自动选择还是我在这里遗漏了一些东西 这是我实现的复制粘贴方法 private void list
  • urllib2:读取 https url 失败

    此代码在我的 Ubuntu 上失败 但在其他主机上运行良好 gt gt gt from urllib2 import urlopen gt gt gt urlopen https courtapps utcourts gov Xchange
  • 客户端使用的数据库历史记录

    我试图找出在数据库上记录历史记录 跟踪已完成的任何插入 删除 更新的最佳方法是什么 历史数据需要编码到前端 因为它将被用户使用 创建 历史表 用于存储历史记录的每个表的副本 并不是一个好方法 因为数据分布在多个表中 此时 我最好的想法是创建
  • 在 Flash 中从中心缩放

    我正在使用 flash AS3 并且有一个动态影片剪辑 我想使用滑块放大或缩小该影片剪辑 我使用scaleX和scaleY函数使这个工作得很好 唯一的麻烦是这些从文档的左侧缩放 我希望它从中心缩放 任何帮助表示赞赏 function sca
  • JavaScript 文件在 ASP.NET Core 区域中的位置

    我正在创建一个 ASP NET Core 应用程序 其中包含多个区域 我应该在哪里添加特定于某个区域的 JavaScript 文件 通常我将它们放入 wwwroot js 文件夹中 某个区域有类似的东西吗 我应该在哪里添加 JavaScri
  • 使 Amazon S3 文件仅对登录用户可用

    如何使 Amazon S3 中的文件仅可供登录用户访问 我的网站使用 PHP 静态文件存储在 Amazon S3 中 只有登录到我的网站的用户才应该能够访问亚马逊云中的文件 是否可以 您可以使用应用程序根据用户登录生成的签名 URL htt
  • Python 在从函数返回时挂起

    假设我在一个相当复杂的 Flask 应用程序中有两个函数 一个函数调用另一个函数 def dispatch unlock stuff log dis start this routine just sends some data over
  • C++ TlHelp32.h 不工作?

    尽管我不断收到消息 但我已正确包含 TlHelp32 h 标头 错误 标识符 CreateToolhelp32Snapshot 未定义 尝试使用 CreateToolhelp32Snapshot 时 当我在 VS 中使用 查看定义 功能时
  • 如何在表格中间画一个圆以及如何找到圆心?

    using System using System Collections Generic using System ComponentModel using System Data using System Drawing using S