我有一个面板,其backgroundimage
模拟了XY图,如下图所示。
我根据用户输入动态创建pictureboxes
:
问题是坐标是在本机软件中定义的,范围为X and Y from -100 to +100
。我的面板是200px x 200px。
我正在尝试类似的事情:
If X < 0 and then
X0 = X-100
ElseIf X > 0 then
X0 = X+100
Else
X0 = X
End If
(...)
PictureBox(n).location = new point ( X0,Y0 )
但我认为做这样的事情并不好。有没有想过以更好的方式做到这一点?
---- ---- EDIT
目前为止的最佳方法:
Select Case X And Y
Case CInt(X < 0 And Y > 0)
X0 = X + 100
Y0 = Y - 100
Case CInt(X < 0 And Y < 0)
X0 = X + 100
Y0 = Y + 200
Case CInt(X > 0 And Y > 0)
X0 = X + 100
Y0 = Y + 100
Case CInt(X > 0 And Y < 0)
X0 = X + 100
Y0 = Y + 200
'Missing when X=0 and so on
End Select
----编辑----
现在看一下这个例子。
您提供的所有答案都不符合问题。
| X | Y | | X0 | Y0 |
|-100|100 | | 0 | 0 |
| 20 | 40 | |120 | 60 |
| -60|-20 | | 40 | 120 |
| 60|-80 | | 160| 180 |
答案 0 :(得分:2)
只需X0 = X + 100
和Y0 = 100 - Y
即可!例如:
如果X = -100则X0为0,
当X = 0时,X0为100
当X = + 100时,X0为200,
因此,当X
介于-100到100之间时,X0
将在0到200之间,如您所愿!
编辑为: Y0 = 100 - Y
检查您的样本数据及其确定
如果Y = -100则Y0为200,
当Y = 0时,Y0为100,
当Y = + 100时,Y0为0.
答案 1 :(得分:0)
看起来您正在尝试将笛卡尔坐标转换为屏幕到坐标。
Dim xmin As Integer = -100
Dim xmax As Integer = 100
Dim xrng As Integer = xmax - xmin
Dim ymin As Integer = -100
Dim ymax As Integer = 100
Dim yrng As Integer = ymax - ymin
Dim center As New Point(xrng \ 2, yrng \ 2) 'center on screen
一旦我们有了中心,那么其他笛卡尔坐标就可以转换为屏幕坐标。
Dim newcpt As New Point(-50, 50) 'new cartesian pt
Dim drawpt As New Point(center.X + newcpt.X, center.Y + newcpt.Y) 'new cartesian pt translated to screen location
答案 2 :(得分:0)