注册 登录
编程论坛 VB6论坛

为什么不是中心点?

yuma 发布于 2022-09-26 18:24, 1623 次点击
为什么Form1.PSet (Form1.Width / 2, Form1.Height / 2), vbBlue 不是中心点,这不科学!

程序代码:
Private Sub Form_Load()
Form1.Show
Form1.DrawWidth = 3
Form1.PSet (Form1.Width / 2, Form1.Height / 2), vbBlue
Form1.PSet (Form1.ScaleWidth / 2, Form1.ScaleHeight / 2), vbRed
End Sub


只有本站会员才能查看附件,请 登录
7 回复
#2
suzhanpeng2022-09-27 11:27
给定一下就行了
Form1.ScaleWidth = Form1.Width
Form1.ScaleHeight = Form1.Height
#3
cwa99582022-09-28 08:29
红点肯定是在窗口中心点的。
至于蓝点,因为width和height是整个界面的尺寸,而窗体的坐标原点是在窗口的左上边。Form1.Width / 2, Form1.Height / 2比窗口的中心点大,所以是不会在窗口的中心点的。
要在中心点应该要这样:
    a = (Form1.Width - Form1.ScaleWidth) / 2
    b = Form1.Height - Form1.ScaleHeight - a
   
    Form1.PSet (Form1.Width / 2 - a, Form1.Height / 2 - b), vbBlue

是不是要这样的?
#4
yuma2022-09-28 17:43
以下是引用cwa9958在2022-9-28 08:29:20的发言:

红点肯定是在窗口中心点的。
至于蓝点,因为width和height是整个界面的尺寸,而窗体的坐标原点是在窗口的左上边。Form1.Width / 2, Form1.Height / 2比窗口的中心点大,所以是不会在窗口的中心点的。
要在中心点应该要这样:
    a = (Form1.Width - Form1.ScaleWidth) / 2
    b = Form1.Height - Form1.ScaleHeight - a
   
    Form1.PSet (Form1.Width / 2 - a, Form1.Height / 2 - b), vbBlue

是不是要这样的?


这样才对
b = (Form1.Height - Form1.ScaleHeight) / 2
#5
cwa99582022-09-29 08:32
窗体的边缘是上面宽,下面窄的,b = (Form1.Height - Form1.ScaleHeight) / 2是不对的
#6
yuma2022-09-29 17:29
回复 5楼 cwa9958
你程序的点,不在窗体中间,不信你运行一下看看。
#7
lwlskydy2023-05-07 18:47
width,height包括边界
scalewidth,scaleheight不包括边界
(scalewidth/2,scaleheight/2)才是中心点
#8
吹水佬2023-05-11 10:00
PSet是相对“画布”的坐标系统(scaleWidth,scaleHeight,scaleLeft,scaleTop)
同样是一句:
  PSet (Form1.Width / 2, Form1.Height / 2)不变
当scaleWidth,scaleHeight,scaleLeft,scaleTop变动时
  PSet (Form1.Width / 2, Form1.Height / 2)也会变
只有本站会员才能查看附件,请 登录

程序代码:
Private Sub Form_Activate()
    Form1.DrawWidth = 5

    Form1.ScaleWidth = Form1.Width
    Form1.ScaleHeight = Form1.Height
    Form1.PSet (Form1.Width / 2, Form1.Height / 2), vbRed

    Form1.ScaleWidth = Form1.Width + 500
    Form1.ScaleHeight = Form1.Height + 500
    Form1.PSet (Form1.Width / 2, Form1.Height / 2), vbGreen
   
    Form1.ScaleWidth = Form1.Width - 500
    Form1.ScaleHeight = Form1.Height - 500
    Form1.PSet (Form1.Width / 2, Form1.Height / 2), vbBlue
End Sub


1