游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7774|回复: 29

我有问题。各位兄弟姐妹帮帮我。

[复制链接]

4

主题

50

帖子

56

积分

注册会员

Rank: 2

积分
56
发表于 2005-12-31 14:26:00 | 显示全部楼层 |阅读模式
我现在自制一个容器控件,不过在引用这个容器控件的时候遇到一个问题:画在容器控件内的控件不能用像素显示它的坐标。
程序如:
自制UserControl控件作为容器控件
然后在Form1窗体中引用这个控件,并且在控件上面画一个picturebox控件。将usercontrol的scalemode属性设置为3,这样本来picture1.top的单位应该是像素,而不是缇,但是事实却是缇。所以我恳请大家帮我分析一下错误在哪,或者能在自制控件内写代码(不可以在form1内写代码)解决这个问题。
非常感谢大家了。

4

主题

50

帖子

56

积分

注册会员

Rank: 2

积分
56
 楼主| 发表于 2005-12-31 15:56:00 | 显示全部楼层

Re:我有问题。各位兄弟姐妹帮帮我。

各位大哥,比如VB之神,游戏之家,都来帮帮我啊,你们可是高手啊。

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-12-31 16:09:00 | 显示全部楼层

Re:我有问题。各位兄弟姐妹帮帮我。

你这样说我一点也不明白,把代码发上来看看。

4

主题

50

帖子

56

积分

注册会员

Rank: 2

积分
56
 楼主| 发表于 2005-12-31 16:33:00 | 显示全部楼层

Re:我有问题。各位兄弟姐妹帮帮我。

自己做一个控件,简单来说吧。就用自己做的控件usercontrol的controlcontain的属性设置为true。再把scaleMode这个属性影射给usercontrol控件。然后生成一个OCX控件。
新建一个工程中引用这个部件,然后在窗体FORM1上画出usercontrol控件。再在usercontrol上面画一个picturebox控件。将usercontrol的scaleMode属性设为3。
写入简单的代码:Private Sub Form_Load()
    UserControl11.ScaleMode = 3
    MsgBox Picture1.Top
    MsgBox UserControl11.ScaleMode
End Sub
本来picture1.top 的值的单位应该是像素了,而不是缇,但是的出的答案却是缇不是像素。
就是说usercontrol11.scalemode = 3 这句话根本就没有用,其实scalemode=1,因为他的值是缇,不是像素。
明白了没有啊。我着急啊。大哥们。

4

主题

50

帖子

56

积分

注册会员

Rank: 2

积分
56
 楼主| 发表于 2005-12-31 16:40:00 | 显示全部楼层

Re:我有问题。各位兄弟姐妹帮帮我。

正常情况下,在FORM1上画一个picturebox.名称为picture1,然后在picture1上再画一个picture2,再将picture1.scaleMode = 3 — PIXeL 这样,picture2.top的值单位是像素。
而我上面说的那种情况就不一样了,就算把scalemode= 3 picture2.top的值也是缇

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-12-31 16:49:00 | 显示全部楼层

Re:我有问题。各位兄弟姐妹帮帮我。

我程序里也常用
scalemode=3
但你这个我不清楚为什么不行。

4

主题

50

帖子

56

积分

注册会员

Rank: 2

积分
56
 楼主| 发表于 2005-12-31 17:00:00 | 显示全部楼层

Re:我有问题。各位兄弟姐妹帮帮我。

不清楚的话就看看啊,你是高手啊,别影响你在我心目中的地位啊。

10

主题

42

帖子

42

积分

注册会员

Rank: 2

积分
42
发表于 2005-12-31 18:27:00 | 显示全部楼层

Re:我有问题。各位兄弟姐妹帮帮我。

无端的猜测 可能
1 自己控件 写成 s=1 成只读了
2 p1 .scalem    对 包含 起作用 对 p2 有用
         改称 form1.scalem=3  p1=3 p2=3 实施  

18

主题

110

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2006-1-1 10:07:00 | 显示全部楼层

Re:我有问题。各位兄弟姐妹帮帮我。

我不清楚你的控件是外部的ocx还是工程内的用户控件
如果是工程内的用户控件.他在工程中被实例化后的坐标系会符从目标的坐标系
解决方法是在用户控件内将坐标系强制转换为象素,而不是简单的设置窗体的坐标系
一个象素=15绨

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2006-1-1 16:50:00 | 显示全部楼层

Re:我有问题。各位兄弟姐妹帮帮我。

我自己的程序必用  scalemode=3 , 没出过问题,会不会你的OCX有问题?

我还有这样的设置:
FORM1.HEIGHT=800*15
FORM1.WIDTH=600*15

以前好象用过(你查下VB指令手册)
SCALE(0,0)-(800,600)

今天我不在家,在外面临时上网,命令记不起。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 04:12

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表