vb求解,坐标系问题

作者&投稿:肇玛 (若有异议请与网页底部的电邮联系)
急!关于vb坐标系的问题!~

object.Scale (-me.scalewidth,me.scaleheight)-(me.scalewidth,-me.scalewidth)


下面给你点资料熟悉

Scale 方法
语法

object.Scale (x1, y1) - (x2, y2)

Scale 方法的语法包含下列部分:

部分 描述
object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,则带有焦点的 Form 对象缺省为 object。
x1, y1 可选的。均为单精度值,指示定义 object 左上角的水平(x-轴)和垂直(y-轴)坐标。这些值必须用括号括起。如果省略,则第二组坐标也必须省略。
x2, y2 可选的。均为单精度值,指示定义 object 右下角的水平和垂直坐标。这些值必须用括号括起。如果省略,则第一组坐标也必须省略。


说明

Scale 方法使您能够将坐标系统重置到所选择的任意刻度。Scale 对运行时的图形语句以及控件位置的坐标系统都有影响。

如果使用不带参数的 Scale(两组坐标都省略),坐标系统将重置为缇。

ScaleWidth 属性


当使用图形方法或调整控件位置时,返回或设置对象内部的水平 (ScaleWidth) 或垂直 (ScaleHeight) 度量单位。对于 MDIForm 对象,在设计时 是不可用的,并且在运行时是只读的。

语法



object.ScaleWidth [= value]
ScaleWidth 属性的语法包含下面部分:

部分 描述
Object 对象表达式,其值是“应用于”列表中的一个对象。
Value 一个用来指定水平或垂直度量的数值表达式。


说明

能够使用这些属性来为绘图或打印创建一个自定义的坐标比例尺。例如,语句 ScaleHeight = 100 将改变窗体实际内部高度的度量单位。取代当前高度为 n 个单位(缇、像素、...),高度将变为 100 个自定义单位。因而,50 个单位的距离就是对象的高度/宽度的一半,101 个单位的距离将超出对象 1 个单位。

为了定义基于标准度量单位的比例尺,例如缇、磅、像素、字符、英寸、毫米、或厘米应使用 ScaleMode 属性。

这些属性设置为正值将使坐标从上向下及从左向右增加。它们设置为负值将使坐标从下向上及从右向左增加。

这些属性和相关的 ScaleLeft 与 ScaleTop 属性的使用,可以建立起一个完全的带有正、负坐标的坐标系统。所有这四个 Scale 属性与 ScaleMode 属性按下面的方式进行交互作用:

把其它任何 Scale 属性设置为任何值都将使 ScaleMode 自动地设置为 0。ScaleMode 等于 0 是用户定义。


把 ScaleMode 设置为一个大于 0 的数,将使 ScaleHeight 和 ScaleWidth 的度量单位发生改变,并将 ScaleLeft 和 ScaleTop 设置为 0。另外,CurrentX 和 CurrentY 的设置值将发生改变以反映当前点的新坐标。
也可以在语句中使用 Scale 方法设置 ScaleHeight、ScaleWidth、ScaleLeft 和 ScaleTop 属性。

注意 ScaleHeight 和 ScaleWidth 属性与 Height 和 Width 属性是不一样的。

对于 MDIForm 对象,ScaleHeight 和 ScaleWidth 仅涉及窗体中未被 PictureBox 控件覆盖的区域。在 MDIForm 的 Resize 事件中应避免使用这些属性调整 PictureBox 的大小。

{已按你的要求修改了代码}你QQ我忘了是哪个,发不了,,(需要源码文件Q我)
已按要救改了代码,,给分哈哈,200哈哈
我整理了一下,你新建一个工程,到代码中全部复制,
控件先:
1. 进入VB6开发环境,打开新的标准工程(Standard EXE),工程名称可改为prjCdntDemo,Form1的Name改为frmMain,Caption为“自适应坐标演示:dFindStep()函数”,Width为6150, Height为4995。
2. 按图一布置9个CommandButton控件和一个PictureBox控件,各CommandButton的Name,Caption属性为:cmdXUp, 水平放大;cmdXDown, 水平缩小;cmdYUp, 垂直放大;cmdYDown, 垂直缩小;cmdLeft, 向左移动;cmdRight, 向右移动;cmdUp, 向上移动;cmdDown, 向下移动;cmdClose, 退出;PictureBox控件的Name为picCoordinate,Top为1020,Left为0,Width为6000,Height为3500。其它属性缺省。
这个是必须的,,下面就是复制代码了,,,,
Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Private dStartX As Double '物理坐标水平起始值
Private dEndX As Double '物理坐标水平终止值
Private dStartY As Double '物理坐标垂直起始值
Private dEndY As Double '物理坐标垂直终止值
Private b(100) As Double
Private Function dFindStep(StepMin As Double) As Double
Dim dStep As Double '搜索比较值
Dim dStepOld As Double
If StepMin = 0 Then '若StepMin等于零则返回零
dFindStep = 0
Exit Function
End If
StepMin = Abs(StepMin) '若小于零则取其绝对值
dStep = 50 '从规范间隔数序列中的50开始搜索
If StepMin < dStep Then '若X<50,则不断往左搜索
While StepMin < dStep '此时dStep=50,5,0.5...等
dStepOld = dStep
dStep = dStep / 2.5 '此时dStep=20,2,0.2...等
If StepMin < dStep Then
dStepOld = dStep
dStep = dStep / 2 '此时dStep=10,1,0.1...等
If StepMin < dStep Then
dStepOld = dStep
dStep = dStep / 2 '此时dStep=5,0.5,0.05...等
End If
End If
Wend
dFindStep = dStepOld ' 因为dStep<StepMin<dStepOld,所以返回值为dStepOld
Else '若X>=50,则不断往右搜索
While StepMin > dStep '此时dStep=50,500,5000...等
dStep = dStep * 2 '此时dStep=100,1000,10000...等
If StepMin > dStep Then
dStep = dStep * 2 '此时dStep=200,2000,20000...等
If StepMin > dStep Then
dStep = dStep * 2.5 '此时dStep=500,5000,50000...等
End If
End If
Wend
dFindStep = dStep '返回dStep
End If
End Function
Private Sub DrawCoordinate(iCrossX As Integer, iCrossY As Integer, iWidth As Integer, iHeight As Integer, dStartX As Double, dStartY As Double, dEndX As Double, dEndY As Double)
Dim dCdnStep As Double '物理数值步长
Dim lCdnStep As Long '窗口数值步长
Dim crtPosition As Long '当前窗口坐标位置
Dim UpN As Double '最大格数
Dim dRemain As Double '第一个坐标格的物理坐标长度
Dim dValue As Double '当前物理坐标位置
Dim i As Integer
Dim strTemp As String '存储坐标标注文本
Dim strFormat As String '坐标标注文本的格式
Dim dHeight As Double '物理坐标高度
Dim dWidth As Double '物理坐标宽度
dHeight = dEndY - dStartY
dWidth = dEndX - dStartX
picCoordinate.Cls '对画图区域进行清屏
'画带有箭头的两根坐标轴
picCoordinate.Line (iCrossX, iCrossY)-(iCrossX + iWidth + 200, iCrossY), RGB(0, 0, 255)
picCoordinate.Line (iCrossX, iCrossY)-(iCrossX, iCrossY - iHeight - 200), RGB(0, 0, 255)
picCoordinate.Line (iCrossX, iCrossY - iHeight - 200)-(iCrossX - 30, iCrossY - iHeight), RGB(0, 0, 255)
picCoordinate.Line (iCrossX, iCrossY - iHeight - 200)-(iCrossX + 30, iCrossY - iHeight), RGB(0, 0, 255)
picCoordinate.Line (iCrossX + iWidth + 200, iCrossY)-(iCrossX + iWidth, iCrossY - 30), RGB(0, 0, 255)
picCoordinate.Line (iCrossX + iWidth + 200, iCrossY)-(iCrossX + iWidth, iCrossY + 30), RGB(0, 0, 255)
'接着画Y轴坐标格
'计算屏幕显示的像素限制下的坐标格最大数目
UpN = iHeight / Me.picCoordinate.TextHeight("8")
'计算自适应坐标格间隔大小
dCdnStep = dFindStep(dHeight / UpN)
'计算坐标格起始位置
dRemain = (Int(dStartY / dCdnStep) + 1) * dCdnStep - dStartY
If dRemain = dCdnStep Then dRemain = 0
dValue = dStartY + dRemain
lCdnStep = dCdnStep * iHeight / dHeight
crtPosition = iCrossY - dRemain * iHeight / dHeight
'计算自适应坐标间隔后的实际坐标格数目
UpN = Int(dHeight / dCdnStep)
If crtPosition - UpN * lCdnStep > iCrossY - iHeight Then UpN = UpN + 1
'根据坐标间隔大小选择不同的坐标值显示格式
If dCdnStep > 1 Then
strFormat = "######0"
Else
strFormat = "#####0.#####"
End If
'画坐标格
For i = 1 To UpN
picCoordinate.Line (iCrossX, crtPosition)-(iCrossX + 100, crtPosition), RGB(0, 0, 255)
strTemp = CStr(Format(dValue, strFormat))
TextOut picCoordinate.hdc, (iCrossX - 40 - Len(strTemp) * picCoordinate.TextWidth("8")) / Screen.TwipsPerPixelX, (crtPosition - picCoordinate.TextHeight("8") / 2) / Screen.TwipsPerPixelY, strTemp, Len(strTemp)
dValue = dValue + dCdnStep ' WaveScreen.Left - 100 ,
crtPosition = crtPosition - lCdnStep
Next i
'然后画X轴坐标格,方法步骤与画Y轴坐标类似
UpN = iWidth / Me.picCoordinate.TextWidth("8") / CInt(Abs(Log(dEndX - dStartX) / Log(10#)) + 4)
dCdnStep = dFindStep(dWidth / UpN)
dRemain = Int(dStartX / dCdnStep + 1) * dCdnStep - dStartX
If dRemain = dCdnStep Then dRemain = 0
dValue = dStartX + dRemain
lCdnStep = dCdnStep * iWidth / dWidth
crtPosition = iCrossX + dRemain * iWidth / dWidth
UpN = Int(dWidth / dCdnStep)
If crtPosition + UpN * lCdnStep < iCrossX + iWidth Then UpN = UpN + 1
If dCdnStep > 1 Then
strFormat = "######0"
Else
strFormat = "#####0.#####"
End If
For i = 1 To UpN
picCoordinate.Line (crtPosition, iCrossY)-(crtPosition, iCrossY - 100), RGB(0, 0, 255)
strTemp = CStr(Format(dValue, strFormat))
TextOut picCoordinate.hdc, (crtPosition - Len(strTemp) * picCoordinate.TextWidth("8") / 2) / Screen.TwipsPerPixelX, (iCrossY + 240 - picCoordinate.TextHeight("8")) / Screen.TwipsPerPixelY, strTemp, Len(strTemp)
dValue = dValue + dCdnStep
crtPosition = crtPosition + lCdnStep

Next i
End Sub
Private Sub cmdClose_Click()
End '结束程序
End Sub
Private Sub cmdDown_Click()
Dim dStep As Double
dStep = (dEndY - dStartY) / 4
dStartY = dStartY + dStep
dEndY = dEndY + dStep
画坐标轴
定义的函数关系
End Sub
Private Sub cmdLeft_Click()
Dim dStep As Double
dStep = (dEndX - dStartX) / 4
dStartX = dStartX + dStep
dEndX = dEndX + dStep
画坐标轴
定义的函数关系
End Sub
Private Sub cmdRight_Click()
Dim dStep As Double
dStep = (dEndX - dStartX) / 4
dStartX = dStartX - dStep
dEndX = dEndX - dStep
画坐标轴
定义的函数关系
End Sub
Private Sub cmdUp_Click()
Dim dStep As Double
dStep = (dEndY - dStartY) / 4
dStartY = dStartY - dStep
dEndY = dEndY - dStep
画坐标轴
定义的函数关系
End Sub
Private Sub cmdXDown_Click()
dEndX = dStartX + (dEndX - dStartX) * 1.5
画坐标轴
定义的函数关系
End Sub
Private Sub cmdXUp_Click()
dEndX = dStartX + (dEndX - dStartX) / 1.5
画坐标轴
定义的函数关系
End Sub
Private Sub cmdYDown_Click()
dEndY = dStartY + (dEndY - dStartY) * 1.5
画坐标轴
定义的函数关系
End Sub
Private Sub cmdYUp_Click()
dEndY = dStartY + (dEndY - dStartY) / 1.5
画坐标轴
定义的函数关系
End Sub
Private Sub Command3_Click()
a = Int(100 * Rnd + 1)
Text1.Text = a
End Sub
Private Sub Form_Load()
dStartX = 0
dStartY = 0
dEndX = 1000
dEndY = 600
End Sub
Private Sub 画坐标轴()
Dim iCrossX As Integer '两坐标轴交点的窗口坐标X
Dim iCrossY As Integer '两坐标轴交点的窗口坐标Y
Dim iHeight As Integer '坐标轴的窗口坐标高度
Dim iWidth As Integer '坐标轴的窗口坐标宽度
Dim i As Integer
Dim dX As Double '示意波形的物理坐标X
Dim dY As Double '示意波形的物理坐标Y,或窗口坐标Y
iCrossX = 600
iCrossY = picCoordinate.Height - 500
iWidth = picCoordinate.Width - 1000
iHeight = picCoordinate.Height - 1000
Call DrawCoordinate(iCrossX, iCrossY, iWidth, iHeight, dStartX, dStartY, dEndX, dEndY)
End Sub
Private Sub Form_Resize()
If Me.Height < 4000 Then Me.Height = 4000
picCoordinate.Width = Me.Width - 150
picCoordinate.Height = Me.Height - 1500
画坐标轴
定义的函数关系
End Sub
Private Sub 画图(x As Double, y As Double)
picCoordinate.PSet (600 + (x * ((picCoordinate.Width - 1000) / (dEndX - dStartX))), picCoordinate.Height - 500 - (y * ((picCoordinate.Height - 1000) / (dEndY - dStartY)))), RGB(255, 0, 0)
End Sub
Private Sub 定义的函数关系()
Dim a As Integer
Dim c As Double
Dim d As Double
For a = 0 To 100
If b(a) = 0 Then
b(a) = Int(100 * Rnd + 1)
d = b(a)
If dStartY < 0 Then
d = d + Abs(dStartY)
End If
Else
d = b(a)
If dStartY < 0 Then
d = d + Abs(dStartY)
End If

End If
If dStartX < 0 Then
c = Abs(dStartX) + a
Else
c = a
End If
画图 c, d
Next a
End Sub
QQ:506653350 注明百度知道

第一句,将Picture1的左上角坐标定义为(0,100),右下角座标定义为(100,0),也就是说左下角是原点,向上为Y的正方向,向右为X的正方向,类似直角坐标的第一象限。
第二句,在上述坐标系中的点(10,20)处画一个X方向长为5,Y方向长为f(0)*10,颜色为蓝色值225的填充矩形。
以下是程序中两种方法的说明:
object.Scale(x1,y1)-(x2,Y2):将Object的左上角坐标定义为(x1,y1),右下角坐标定义为(x2,Y2);
object.line [step](x1,y1)-[step](x2,y2),color,[B][F]:当后面不带B参数时,表示从(x1,y1)到(x2,y2)画一条直线,颜色为color;当带B参数时,表示画一个矩形,其对角线为(x1,Y1)-(x2,Y2);当带BF参数时,表示对矩形进行填充,填充方式按object的定义。当在坐标前面加step参数时,表示相对(前一点)坐标。

Picture1.Scale (0, 100)-(100, 0)

原型:Picture1.Scale (x1, y1)-(x2, y2)

解析:x1=0,x2=100 即把picture1的x方向宽度分为0%-100%
y1=100,y2=0即把picture1的y方向高度分为100%-0%,即倒置,把原本y的方向向下改为我 们数学习惯y的方向向上
下面的数字10,20,40,55,75等均为百分比,随着picture1高度,宽度变化而变化,这样就不会由于显示屏分辨率不同而导致图形跑到picture1之外


数学问题 在平面直角坐标系xoy中.A(-1,0)B(0,2)C(2,0) (一)求过点C...
(1)AB:y=2x+2,若垂足为D,设CD:y=-1\/2x+b 把x=2,y=0代入,得:0=-1\/2×2+b b=1 即CD:y=-1\/2x+1 (2)联立y=2x+2,y=-1\/2x+1 得点D坐标为(-2\/5,6\/5),由题可知点D就是圆与AB交点 代入:(x-2)平方+y平方=36\/5 ...

结合所给的阅读材料,求解问题.材料:在直角坐标系中,如果有两点A(a,b...
作NA⊥x轴于点A, ∵点N在x轴上的射影坐标为( -2250 3 ,0),∴OA=2250 3 ,∵α=30°,∴ON=OA÷cosα=2250 3 ÷ 3 2 =4500米,∵炮弹飞行速度为750米\/秒.∴4500÷750=6秒,∴炮弹从发射到击中目标用了6秒.

平面直角坐标系的三角函数问题!
解:(1)A+B+C=180 正弦定理 b\/sinB=c\/sinC bsinC=-2csinBcosA b\/sinB=-2c\/sinC×cosA cosA=-1\/2 A=120度,因为A是三角形的内角 (2)AB=√(√2-0)²+(√2-0)²=2(2点间距离公式)根据余弦定理 cosA=(b²+c²-a²)\/2bc -bc=b²+c²...

一道数学题,求解,急~~如图,在平面直角坐标系中,已知A(-1,0)、B(3...
(1)设C(0,y1),因为AB是直径,所以∠ACB=90° △ABC为直角三角形 由射影定理OC^2=AO*BO y^2=1*3 y=√3 即C(0,√3)设M(x1,0) M为AB中点, x1=(-1+3)\/2=1 即M(1,0)M(1,0),B(3,0)为抛物线与x轴两交点可知,抛物线对称轴为x=(1+3)\/2=2 又因为抛物线与y...

数学问题,已知在空间直角坐标系中A(0,-4,1),B(-1,-3,1),C(2,-4,0...
先求得向量AB=(-1,1,0)、向量AC=(2,0,-1)AB*AC=|AB||AC|cosa -2=√2*√5cosa, cosa=-2\/√10 sina=√15\/5 三角形面积=(1\/2)*|AB||AC|sina=(1\/2)*√2*√5*√15\/5=√6\/2

我想问老师问题在平面直角坐标系中 已知点A(2,3),点B(-4,0),点C(1...
如图,三角形的面积分为两部分三角形ABD与三角形BCD的和,三角形ABD面积=BD*AM\/2 三角形BCD面积=BD×CN/2 总面积=BCD+ABD 因为CN=AM且两直线平行,可知D为NM中点,坐标(2.5,0)所以最后的结果是16.5

初一数学问题,速求.在平面直角坐标系中,点A(0,3),B(0,-2),点C在x轴...
设点C为(x,0)△ABC面积=|3+2|×|x|÷2=15 |x|=6 x=±6 所以点C为(6,0)或(-6,0)

参数问题【例1】 在平面直角坐标系中,点a(3.0),b(0,4),c(m,2m+6...
点D在何处?(下面的计算当点D的为点O(圆点))四边形ABCO的面积=三角形ABO的面积+三角形ACO的面积 三角形ABO的面积=AO*4=4*3\/2=6 三角形ACO的面积=AO*(-m)=4*(-m)\/2=-2m 所以,四边形ABCO的面积=6-2m

如图,空间直角坐标系Oxyz中,正三角形ABC的顶点A,B分别在xoy平面和z...
先讨论两种特殊情况,即A点在原点,和B点在原点的情况。然后讨论一般情况,此时欲C点离原点最远,则C点必须在平面OAB内 就将空间坐标系问题转换成了直角坐标系问题,以OA为X轴,以原Z轴为Y轴,问题变为,直角坐标系中,B在Y轴上运动,A在X轴上运动,求OC的最长距离,过C点做X轴的垂线,设角...

请问怎么将西安80坐标系三度带 X=3523460.7,Y=41494602.7,转换成经...
使用逆算公式计算出的西安80坐标系三度带 X=3523460.7,Y=41494602.7 所对应的经纬度坐标。根据逆算公式的推导,我们需要首先计算出该点与中央经线(108°)的距离以及与赤道的夹角。距中央经线的距离可以通过以下公式计算:N = (X - 3e+6) \/ k0 其中,k0 = 1,3e+6表示该坐标系中心经线所在...

和龙市18016184372: VB已知平面坐标系中两点的坐标,求两点间的距离! -
伍牲尤特:[答案] (x,y)、(m,n)是已知两点的坐标,则距离公式是s=sqr((m-x)*(m-x)+(n-y)*(n-y))这是在程序中使用的语句

和龙市18016184372: 用vb编程已知平面坐标系中两点的坐标,求两点的距离 -
伍牲尤特: Private Sub Command1_Click() Dim x1 As Single, x2 As Single, y1 As Single, y2 As Single, s As Single x1 = InputBox("x1", "输入x1") y1 = InputBox("y1", "输入y1") x2 = InputBox("x2", "输入x2") y2 = InputBox("y2", "输入y2") s = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2) Print "两点间距离为"; s End Sub

和龙市18016184372: 请教一个VB坐标系的问题 -
伍牲尤特: 使用Scale 方法: Private Sub Form_Click() Dim y As Single y = 80 Line (0...

和龙市18016184372: VB:设当前的坐标为form1.scale(10.10) - ( - 20, - 20),那么说明这个坐标系 - ?___ --
伍牲尤特:[选项] A. X正方向向右,Y正方向向右 B. X正方向向右,Y正方向向左 C. X正方向向左,Y正方向向右 D. X正方向向左,Y正方向向左

和龙市18016184372: VB中的容器坐标系问题.. -
伍牲尤特: 第二种情况不对,应该是:Private Sub Form_Click() Form1.Scale (-1.5, 1)-(1.5, -1) Form1.CurrentX = 0 Form1.CurrentY = 0 Print "你好" End Sub 因为这时候窗体的中心已经是坐标原点了,所以x和y都是0 .学VB你不能光看书啊,实际上机验证一下你就很快明白了.

和龙市18016184372: vb自定义坐标系疑问 -
伍牲尤特: scale(x1,y1)-(x2,y2) 你只要记住,这里的x1,y1是左上角的坐标,x2,y2是右下角的坐标,通过这两个点的坐标设定,就可以决定坐标原点的位置以及坐标轴的方向了,比如 Scale (-300,200)-(300,-200) 以上是把坐标原点设在窗体中心,x轴长600,...

和龙市18016184372: VB坐标问题 -
伍牲尤特: Width、Height是窗体的整体宽度和高度,ScaleWidth和ScaleHeight则是窗体中客户区(也就是去掉边框、标题栏、菜单等后可实际利用的区域)的宽度和高度.ScaleMode选0,表示客户区采用的是用户自定义坐标系统,如果设ScaleWidth=...

和龙市18016184372: VB画坐标问题
伍牲尤特: 放在Form_Resize()里

和龙市18016184372: vb中坐标的计算 -
伍牲尤特: 看看你的平面解析几何学的怎么样了 一般先定义一个数组,初始值为开始的座标点,然后X向增加a,Y向增加b,一点一点的增加,就可以沿直线走了.

和龙市18016184372: 在vb中,已知直角坐标系中任意一点坐标(x,y),表示其位于第一或第三象限内.整数写出表达式啊,急 -
伍牲尤特:[答案] if sgn(x)=sgn(y) then print "(x,y)位于第一或第三象限内" end if 如果x和y的符号相同 则(x,y)位于第一或第三象限内 sgn(n)返回的是n的符号值

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网