标题:为什么不是中心点?
只看楼主
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
结帖率:89.13%
 问题点数:0 回复次数:7 
为什么不是中心点?
为什么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


搜索更多相关主题的帖子: End 中心 Sub Private Show 
2022-09-26 18:24
suzhanpeng
Rank: 4
等 级:业余侠客
威 望:7
帖 子:72
专家分:248
注 册:2016-9-28
得分:0 
给定一下就行了
Form1.ScaleWidth = Form1.Width
Form1.ScaleHeight = Form1.Height
2022-09-27 11:27
cwa9958
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:247
专家分:1228
注 册:2006-6-25
得分:0 
红点肯定是在窗口中心点的。
至于蓝点,因为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

是不是要这样的?
2022-09-28 08:29
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
得分:0 
以下是引用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

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-09-28 17:43
cwa9958
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:247
专家分:1228
注 册:2006-6-25
得分:0 
窗体的边缘是上面宽,下面窄的,b = (Form1.Height - Form1.ScaleHeight) / 2是不对的
2022-09-29 08:32
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
得分:0 
回复 5楼 cwa9958
你程序的点,不在窗体中间,不信你运行一下看看。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-09-29 17:29
lwlskydy
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2022-4-15
得分:0 
width,height包括边界
scalewidth,scaleheight不包括边界
(scalewidth/2,scaleheight/2)才是中心点
2023-05-07 18:47
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
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


2023-05-11 10:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510146-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053523 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved