vb.net c# 在picturebox中用GDI画图问题

wangerxiao0606 wangerxiao0606 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
大家好,请教一个困惑很久的问题,我想在vb.net或者C# 的picturebox控件中画一个折线图,面临如下问题:
1.坐标系转换
2.像素与x轴数字个数的关联问题
我不想使用ZedGraph或者MSChart解决此问题,从技术角度,还是想用GDI解决此问题

代码我写了一部分,需求在里面用注释的形式写下,新建一个工程后,拖一个按钮,一个picturebox.按钮中代码如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim w As Integer = PictureBox1.Width '图像宽度 单位:像素
Dim h As Integer = PictureBox1.Height '图像高度 单位:像素
Dim mybitmap As Bitmap = New Bitmap(w, h)
PictureBox1.Image = mybitmap
Dim Graph As Graphics '定义画布
Graph = Graphics.FromImage(PictureBox1.Image) '设置画布
Graph.Clear(Color.Black)

Dim arr(6) As Integer '定义一个7个数组成的数组
arr(0) = 200
arr(1) = 262
arr(2) = 88 '最小值
arr(3) = 422
arr(4) = 219
arr(5) = 333
arr(6) = 526 '最大值

'假设picturebox宽度是314,高度是212
'问题1:重新建立我们熟悉的坐标系,左下角为(0,0),右上角为(7,526),7是表示数组个数
'问题2:在此坐标系之上7个点连成一个折线图
'问题3:难道真的要手动计算每个点的像素位置吗?或者说坐标,比如左边第一个点的X轴坐标就是w/7,这样获得的是一个小数啊
'数据少的时候可以cint一下,误差还好.但是当arr这个数组的长度比较大的时候,比如9999,而picturebox的宽度比如是200的时候,误差也会越来越大
'有什么方法可以将数组的长度和picturebox的像素比较方便的结合起来或者不用我们去理会,就像过去vb6时
'可以使用 Picture2.Scale (x1, y1)-(x2, y2)一样比较方便的设置scale,而不用去考虑像素问题

'我不想使用zedgraph或者mschart这些控件,我相信应该有解决方法,因为这些控件的底层不也是按照GDI的原理画出来的吗
'谢谢大家!!!!!

End Sub
...全文

相关推荐

vb.net2008 在picturebox上用GDI画图

在VB6的时候,可以用picture.scale轻易的设定坐标,在vb.net下是不可以的,所以必须"硬画"! 本压缩包为vb2008工程文件,代码注释很详细,用GDI在picturebox中画图,设定X坐标,Y坐标范围,在picturebox中按照常规的坐标系进行画图.纯用GDI,没什么好方法. 求方便的话就用zedgraph或者mschart吧 上传到CSDN,自己也作为一个备份

wangerxiao0606

VB.NET中基于GDI+的图形缩放与旋转实现详解

在现代桌面应用程序开发中,图形界面的交互性与可视化能力至关重要。GDI+(Graphics Device Interface Plus)作为Windows平台下核心的2D图形绘制引擎,为开发者提供了丰富的绘图接口和高效的渲染机制。本章将系统介绍GDI+的基本架构、核心类库及其在VB.NET环境中的应用背景。在图形用户界面(GUI)开发中,静态绘制图形只是基础功能,真正赋予图形生命力的是对它们进行动态操作的能力——尤其是形状的定义、边界描述以及几何变换。

holy-pills

VB6简易画图工具开发实战

Visual Basic 6(简称VB6)作为上世纪90年代末广泛使用的开发工具,以其简洁的语法和强大的图形界面设计能力,深受开发者喜爱。在那个Windows桌面应用盛行的年代,VB6不仅被用于业务系统的开发,也被广泛应用于图形绘制类小程序的实现。其内置的绘图对象模型(如Graphics、Pen、Brush)为开发者提供了较为直观的图形操作接口。

FasterThanMind

VB实现超级玛丽游戏开发实战

Visual Basic(VB)是一种简单易学的编程语言,由微软公司在1991年发布。它的名称中的“Basic”指的是“Beginner’s All-purpose Symbolic Instruction Code”,即“初学者通用符号指令代码”,这体现了VB的初衷——为编程初学者提供一个友好的开发环境。VB的最新版本是Visual Basic .NET,它支持面向对象编程,并且与.NET框架紧密集成。键盘事件是游戏交互中最基础也是最常用的输入方式之一。

红廉骑士兽

VB.Net 中Label透明字体显示

在VB.Net中, 如何在Picture控件上显示Lable的透明字体

zenas
评论 1
收藏 已收藏
分享
返回顶部
wangerxiao0606
VB 16,718 成员 110,520 内容