如何绘制 (x,y,z)

2024-01-15

Is there anyway to plot x(from x textbox), y(from y textbox), and z(from z textbox) in vb form? It is windows application. I have three text boxes that indicates x,y,z coordinate. I was wondering if there is any tool or method to show this point to user.enter image description here


这里有两条主要途径。 1) 将(x,y,z)坐标变换为平面投影(x,y)并使用gdi+ /questions/tagged/gdi%2b在屏幕上绘图,或 2) 使用opentk /questions/tagged/opentk直接将点绘制到GLControl,但您必须先设置视口和投影。

它不是很漂亮,但这是一个概念证明VS2010 using OpenTK http://www.opentk.com/.

public partial class Form1 : Form
{
    bool loaded=false;

    public Form1()
    {
        InitializeComponent();
    }

    public Vector3 PointCoordinates
    {
        get
        {
            float x=0, y=0, z=0;
            float.TryParse(xTextBox.Text, out x);
            float.TryParse(yTextBox.Text, out y);
            float.TryParse(zTextBox.Text, out z);

            return new Vector3(x, y, z);
        }
        set
        {
            xTextBox.Text=value.X.ToString();
            yTextBox.Text=value.Y.ToString();
            zTextBox.Text=value.Z.ToString();
        }
    }
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        PointCoordinates=new Vector3(0, 0, 0);
        loaded=true;
        SetupViewPort();
    }

    private void glControl1_Resize(object sender, EventArgs e)
    {
        if(!loaded) return;
        SetupViewPort();
    }

    private void glControl1_Paint(object sender, PaintEventArgs e)
    {
        glControl1.MakeCurrent();
        GL.ClearColor(glControl1.BackColor);
        GL.Clear(ClearBufferMask.ColorBufferBit|ClearBufferMask.DepthBufferBit);

        GL.MatrixMode(MatrixMode.Modelview);
        GL.LoadIdentity();

        SetupCamera();

        // Draw Coordinate System
        GL.LineWidth(1.5f);
        GL.Begin(PrimitiveType.Lines);
        GL.Color3(Color.Red);
        GL.Vertex3(0, 0, 0);
        GL.Vertex3(1, 0, 0);
        GL.Vertex3(0.85, 0.05, -0.05);
        GL.Vertex3(1, 0, 0);
        GL.Vertex3(0.85, -0.05, 0.05);
        GL.Vertex3(1, 0, 0);
        GL.Color3(Color.Green);
        GL.Vertex3(0, 0, 0);
        GL.Vertex3(0, 1, 0);
        GL.Vertex3(-0.05, 0.85, 0.05);
        GL.Vertex3(0, 1, 0);
        GL.Vertex3(0.05, 0.85, -0.05);
        GL.Vertex3(0, 1, 0);
        GL.Color3(Color.Blue);
        GL.Vertex3(0, 0, 0);
        GL.Vertex3(0, 0, 1);
        GL.Vertex3(-0.05, 0.05, 0.85);
        GL.Vertex3(0, 0, 1);
        GL.Vertex3(0.05, -0.05, 0.85);
        GL.Vertex3(0, 0, 1);
        GL.End();

        // Draw a single point
        var vector=PointCoordinates;
        GL.PointSize(5f);
        GL.Begin(PrimitiveType.Points);
        GL.Color3(Color.Black);
        GL.Vertex3(vector);
        GL.End();
        GL.PointSize(3f);
        GL.Begin(PrimitiveType.Points);
        GL.Color3(Color.Yellow);
        GL.Vertex3(vector);
        GL.End();

        glControl1.SwapBuffers();
    }

    void SetupViewPort()
    {
        float wt=Math.Max(1, glControl1.Width);
        float ht=Math.Max(1, glControl1.Height);
        float sz=(float)Math.Sqrt(ht*wt);
        GL.Viewport((int)(wt-sz)/2, (int)(ht-sz)/2, (int)sz, (int)sz);
        var ortho=Matrix4.CreateOrthographic(
            10f, 10f, 1f, 200f);
        GL.MatrixMode(MatrixMode.Projection);
        GL.LoadMatrix(ref ortho);
    }

    void SetupCamera()
    {
        Matrix4 lookAt=Matrix4.LookAt(
                        10f, 5f, 15f,
                        0f, 0f, 0f,
                        0f, 1f, 0f);
        GL.MatrixMode(MatrixMode.Modelview);
        GL.LoadMatrix(ref lookAt);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        glControl1.Refresh();
    }

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

如何绘制 (x,y,z) 的相关文章

  • 在 DataGridView 中隐藏行非常慢

    我在 Winforms 应用程序中有一个 DataGridView 大约有 1000 行 未绑定 和 50 列 隐藏一列需要整整 2 秒 当我想隐藏大约一半的行时 这就成为一个问题 private void ShowRows string
  • WinForms 中的 EF:如何过滤 BindingSource/DGW 中的数据 (.Local.ToBindingList())

    我按照本教程生成了 EF 模型 首先是数据库 和数据源http msdn microsoft com en us data jj682076 aspx http msdn microsoft com en us data jj682076
  • 按比例调整图片框的大小以调整表单大小

    我希望每次 用户调整表单的大小 图片框中的图像也使用相同的值 按比例 调整大小 我在互联网上搜索了一些代码并在中找到了这个答案堆栈溢出 https stackoverflow com a 6501997 3264464 https stac
  • 如何获取Winforms窗体标题栏高度的大小?

    因此 如果它是工具窗口或可最小化的表单 我希望能够以编程方式获取其高度 这可能吗 如果是这样怎么办 您可以使用以下方法确定工具窗口和普通表单的标题栏高度 Rectangle screenRectangle this RectangleToS
  • 删除DataGridView(表)中的多行

    我有一个数据表 myTable 它与 DataGridView dgv 绑定 DataGridView dgv 有一个复选框列 我的目标是删除在按钮事件中选中的行 数据表当然会更新 现在我的代码仅适用于删除一行 不适用于多行 感谢帮助 pr
  • 比较数组中的文件、从文本文件中删除行、函数、日志记录

    所以我创建了这两个数组 Approved Shares 和 Current Shares Reads Approvedshare txt and makes the txt file into an array public objFSO
  • C# 按钮文本 Unicode 字符

    C 不想在按钮上放置 Unicode 字符 如果我将 u2129 放入按钮的 文本 属性中 按钮将显示 u2129 而不是 Unicode 字符 例如 我选择 2129 因为我可以在计算机上当前活动的字体中看到它 我之前看到过这个问题链接文
  • 在javascript中访问隐藏字段值

    我的表单中有一个隐藏字段 我正在服务器上设置隐藏字段的值并尝试从 javascript 访问该值 我收到错误 无法获取属性 值 的值 对象为 null 或未定义 如果我查看源代码 则会设置隐藏字段值 并且隐藏字段的 ID 与我正在调用的 I
  • 使一个对象只能被同一程序集中的另一个对象访问?

    每个业务对象都有一个包含 sql 调用的匹配对象 我想限制这些 sql 对象 使其只能由匹配的业务对象使用 如何才能实现这一目标 Update 格雷格提出了关于可测试性的观点 由于 SqlObjects 将包含非常特定于业务流程的 sql
  • 如何在vb.net中对datagridview的3列进行排序

    下面我想对 ProductCode ColorCode 和 Size 列进行排序 请指导 对 大小 列中的信息进行排序 Size Number sequence XS 1 S 2 M 3 L 4 XL 5 XXL 6 2L 7 3L 8 4
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • Vb中读取USB存储设备的序列号

    是否可以使用VB读取USB驱动器的序列号 这将为您提供 net 中驱动器的信息 包括 USB 设备 只需导入这些 导入脚本 导入系统 IO Private Class USBsn Private Sub Button1 Click ByVa
  • Newtonsoft.Json.JsonReaderException

    我的 Newtonsoft Json 有问题 我正在尝试从 URL 解析 JSON 但收到错误 这是 JSON ID 0 Nome we Data 2013 09 16 Orario 00 00 16 Prestazione dfg Sta
  • WithEvents(句柄)与 AddHandler 之间的区别

    我搜索了关键字使用的差异Handles http msdn microsoft com en us library 6k46st1y aspx代替添加处理程序 http msdn microsoft com en us library 7t
  • 数字或货币的字符串格式?

    我需要为每个千给出逗号 所以我用了DataFormatString 0 它运行良好 但当值为0 它正在显示 00 我只想只显示 0 我们怎样才能做到这一点 DataFormatString 0 C0 这将格式化为小数点后 0 位的货币 Da
  • 在运行时从 DataGridView 动态创建 RDLC 报告

    我有一个表格AdvancedSearchForm with a 数据网格视图控制dgrData和一个按钮Report在 C Winform 中 单击按钮时Report 我希望有一个表格报表视图控件显示与 DataGridView 中相同的列
  • 如何配置应用程序以在具有高 DPI 设置(例如 150%)的计算机上正确运行?

    我用 C 创建了一个简单的 Winforms 应用程序 当我在具有高 DPI 设置 例如 150 的计算机上运行应用程序时 应用程序会放大 到目前为止 一切都很好 但所有文本也只是按比例放大 而不是使用更大的字体大小渲染字体 这当然会导致文
  • Scrollable Control中的Scroll/Scroll有什么用?

    ScrollableControl 类有 2 个受保护的布尔属性 HScroll 和 VScroll As the document https msdn microsoft com en us library system windows
  • 确定哪个进程锁定了文件

    我有一个在本地运行良好的单元测试 但上传到 TeamCity 构建服务器时失败 并显示 该进程无法访问该文件 因为它正在被另一个进程使用 在我在测试中做任何事情之前 我检查设置是否有文件 存在 如果存在尝试删除它 这会失败并出现相同的错误

随机推荐

  • 在 R 中格式化日期,不带前导零

    有没有办法使用format日期对象上的函数 特别是类的对象POSIXlt POSIXct or Date 格式为 Y m d以便从这 3 个字段中的每一个字段中去除前导零 例如 我想format as Date 1998 09 02 Y m
  • 在 JavaScript 数组中分散数字

    我有一个数组10 数字 它们代表圆上的坐标 以度为单位 即每个数字都位于两者之间0 and 359 999999 我试图解决的问题是 当我在圆圈上绘制项目时 通过 html5 canvas api 有时它们会聚集在一起 导致项目相互绘制 因
  • 在 downloadHandler 中将使用 grid.draw() 创建的图下载为 png

    我在下载 Shiny 中 downloadHandler 函数中使用 grid draw 创建的绘图时遇到问题 这是我想要实现的目标的可重现示例 library gtable library ggplot2 ui lt shinyUI fl
  • 当值超过阈值时不同的标记颜色

    这是该情况的简化图 http postimg org image qkdm6p31p http postimg org image qkdm6p31p 我希望对高于某个阈值的值有一个红色标记 在这种情况下 红线上方的两个点有一个红色标记 在
  • 当表单具有 id='submit' 值的提交按钮时,表单提交不起作用

    While 这个jsfiddle http jsfiddle net 3at8d4b9 works
  • 警告:preg_match() [function.preg-match]:未知修饰符“/”[重复]

    这个问题在这里已经有答案了 我正在尝试使用 preg match 返回页面源代码中 中包含的所有 URL 我正在使用的代码是 preg match http code matches 我收到以下错误 Warning preg match f
  • 这是参考什么?

    假设我有这样的课程 public class class1 extends Applet implements Runnable private String s private URL u 还有第二类 class TS extends T
  • Git“NO-HEAD”声明

    我在 Eclipse 中使用 EGit 插件 但每当我将项目添加到 Git 时 该插件都会在 Eclipse 目录视图中的项目文件夹旁边放置一个 NO HEAD 指示 难道我做错了什么 这是什么意思 它可以简单地意味着 在您进行第一次添加和
  • 如何以编程方式获取sqlite中所有表的列表

    如何以编程方式获取 sqlite 中所有可用表的列表 尝试这个 SELECT FROM sqlite master where type table
  • IsEnabled 的 WPF 元素数据绑定(但为 false)

    我是 WPF 的初学者 有一些事情我似乎无法弄清楚 我有一个CheckBox我想禁用时RadioButton未选择 我当前的语法是
  • 本地网络上的 Meteor 应用

    我正在学习如何使用 Meteor 如下所示教程 https www meteor com try 我知道 Meteor 自动将应用程序托管到两者localhost和我的 IPv4 地址 在本例中 192 168 1 100 当我访问时192
  • 将联接添加到已有 select_from() 的 SQL Alchemy 表达式

    注意 这是一个关于 SQL Alchemy 表达式语言而不是 ORM 的问题 SQL Alchemy 适合向现有查询添加 WHERE 或 HAVING 子句 q select bmt gene c id select from bmt ge
  • Javascript,为什么被视为八进制

    我将 id 作为参数传递给 JavaScript 函数 因为它来自 UI 所以用零填充 但它似乎有 也许 奇怪 的行为 console log 0000020948 20948 console log 0000022115 9293 whi
  • QTableWidget::itemAt() 返回看似随机的项目

    我刚刚开始使用 Qt 所以请耐心等待 当我使用 QTableWidget gt getItemAt 时 它返回的项目与我使用 currentItemChanged 并单击同一项目时不同 我相信有必要使用 itemAt 因为我需要获取单击的任
  • 首次设置 时 FacesContext#getViewRoot() 返回 null

    我正在尝试更改一页中的 JSF 应用程序区域设置 并且这必须更改我的所有页面区域设置 我已关注此链接 效果很好JSF 中的本地化 如何记住每个会话而不是每个请求 视图选择的区域设置 https stackoverflow com quest
  • 如何在 Java 中读取也具有空值的 Excel 单元格...?

    我正在使用 Apache POI 3 6 我有一个专栏是blank 我希望能够阅读它 然后转到下一栏 即使我能解决NullPointerException问题是我无法到达下一个牢房 这是我的代码片段 HSSFCell cell row ge
  • 从 Java 程序运行 SQL 文件脚本

    我有一组 SQL 文件可以转换我的原始数据集 目前 我打开每个文件并执行它 如何执行 Java 程序中的每个文件 目标是使这个过程更加自动化 我想做类似的事情SqlScript execute myScript sql NOTE这些 SQL
  • 为什么我们不能在堆栈上分配动态内存?

    在堆栈上分配内容非常棒 因为我们有 RAII 并且不必担心内存泄漏等问题 然而有时我们必须在堆上分配 如果数据真的很大 推荐 因为堆栈很小 如果要分配的数据的大小仅在运行时才知道 动态分配 两个问题 为什么我们不能分配动态内存 即大小为 仅
  • 节点 process.env 变量为空

    我正在构建我的第一个 Express 应用程序 它需要使用理想情况下保持安全的 API 密钥与 API 进行交互 所以我想遵循一个基本模式 将密钥 以及任何未来的环境变量 保存在一个 gitignored env根目录下的文件 为了不重新发
  • 如何绘制 (x,y,z)

    Is there anyway to plot x from x textbox y from y textbox and z from z textbox in vb form It is windows application I ha