| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1637 人关注过本帖
标题:为什么不是中心点?
只看楼主 加入收藏
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册: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: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:76
帖 子:279
专家分:1367
注 册: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: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册: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: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:76
帖 子:279
专家分:1367
注 册:2006-6-25
收藏
得分:0 
窗体的边缘是上面宽,下面窄的,b = (Form1.Height - Form1.ScaleHeight) / 2是不对的
2022-09-29 08:32
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
收藏
得分:0 
回复 5楼 cwa9958
你程序的点,不在窗体中间,不信你运行一下看看。

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



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

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