标题:请教如何在picture控件中生成色块后鼠标挪上去获得色块信息?
只看楼主
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:114
注 册:2010-2-17
结帖率:69.81%
已结贴  问题点数:10 回复次数:9 
请教如何在picture控件中生成色块后鼠标挪上去获得色块信息?
如附件中我的程序,通过读取文本文件每一行的部分信息(最后两位数)后,可以在picture控件中生成一个色块,目前我也能做到鼠标挪到picture控件中也可以得到鼠标停留位置的坐标(如窗体左上角),但这个坐标不是我想得到的信息,我想得到的是每一个色块的信息(也就是相应的文本中某一行的前两个数字),例如,我把鼠标在左上角第一个蓝色色块范围内来回移动,窗体左上角的坐标显示要显示为(92,87),只要不出第一个色块范围,这个坐标值是不变的;横排挪动鼠标到第二个色块范围内,窗体左上角的坐标显示要显示为(93,87),后面以此类推。另外,当鼠标挪动到picture空间中右侧和下方纯黑的区域,窗体左上角的坐标是没有任何显示的。

以上是我急需解决的疑问,请路过的版主和各位高手大神不吝赐教,出手援助。

下面一个问题也是我很抓瞎,无从下手,不知该如何解决,但相对上一个问题,急需解决度排在第二:

就是pictuer控件中图片放大缩小的问题,图片内容如上,放大一倍、两倍、最多三倍,缩小看当前图片状态,最多缩小到原图大小。大于原图大小时(两倍大或三倍大时),有移动条可以时图片上下或左右移动。

以上两个问题,在程序中不知道该如何编写语句,烦请路过的版主和各位高手大神不吝赐教,出手援助。这里先拜谢了。

附件两个文件,一个是RAR压缩文件,一个是ZIP文件,内容一样。

try.rar (7.89 KB)

try.zip (12.21 KB)
搜索更多相关主题的帖子: 鼠标 坐标 picture 信息 控件 
2019-11-13 10:46
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:114
注 册:2010-2-17
得分:0 
不好意思啊,需求没说完整,修改一下。

我想得到的是每一个色块的信息(也就是相应的文本中某一行的所有数字),例如,我把鼠标在左上角第一个蓝色色块范围内来回移动,窗体左上角的坐标显示要显示为(92,87,00),只要不出第一个色块范围,这个坐标值是不变的;横排挪动鼠标到第二个色块范围内,窗体左上角的坐标显示要显示为(93,87,00),挪动鼠标到某个绿色色块范围内,窗体左上角的坐标显示要显示为(XX,YY,01),也就是相应的文本中某一行的所有数字,后面以此类推。

烦请路过的版主和各位高手大神不吝赐教,出手援助。拜谢,拜谢!
2019-11-13 20:47
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:10 
下午写了一大堆修改建议,忘了发,关机了。

现在在手机上打字,多的不说了。
看了你的程序,基本上面向对象的方向的
写小工程还无所谓,你这个有点不合适。
使用面向对象搭ui,用面向过程搭逻辑处理。

需要保存读到的所有数据,用于提示,你这个程序抛弃了,重写吧。

最后,每个色块换理来说是正方形的,而你按 显示区域 来划分格子,不成正方形,并且与你那个放大功能冲突。

显示提示,根据XY和格式大小,计算所在的格子,然后显示内容。

你数据文件格式也没说明



[此贴子已经被作者于2019-11-13 23:18编辑过]


授人于鱼,不如授人于渔
早已停用QQ了
2019-11-13 23:16
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
try.rar (9.63 KB)


都是简单的东西。
反应出 逻辑运算不过关,数学不过关。
好吧,我也不怎么的。

授人于鱼,不如授人于渔
早已停用QQ了
2019-11-14 17:53
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:114
注 册:2010-2-17
得分:0 
大神!跪拜叩首!
2019-11-17 21:33
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:109
专家分:0
注 册:2009-3-17
得分:0 
写的匆忙,可以有错误!不知效果如何?

try.rar (11.54 KB)
2019-12-07 17:43
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:114
注 册:2010-2-17
得分:0 
回复 6楼 William1949
您好,谢谢您的回复。

我试了一下,发现一个问题,当鼠标移至某个红点时,指示框内最后面一个数字是“01”,这里错了,“01”应该为绿色。横排向后一个格子指示框内最后面一个数字非“01”,应为红色,但显示为绿色,简单来说估计是指示框横排错了一格。比如第一排的唯一的一个红点的指示框内应该显示为:“134,90,05”,不该显示为“133,90,01”。

另外,看到您使用了指示框功能,这个功能会有一定的拖延,在某些情况下不能显示,再给您一个文件试试,这个文件里的数据比较多。在程序里,有这几个地方要改一改:
111.rar (46.17 KB)

1、    wd = "204"
       ht = "225"
2、向下几行的Right(temp, 2)都改成Right(temp, 1)。
您再试一试。

另外,您是否能够将生成的图片,放大一倍、两倍、三倍......?  缩小看当前图片状态,最多缩小到原图大小。当图片放大超出窗体时,有移动条可以时图片上下或左右移动,看到超出窗体的部分。

放大图片可能会遇到一个问题,就是间隔的黑线也会随之加粗,在放大到一定倍数后格子就会发生变化,大小不同,很丑陋。如果您会放大缩小功能,就用我刚刚上传的文件试一试。

在这里再次向您表示感谢!
2019-12-09 22:39
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:109
专家分:0
注 册:2009-3-17
得分:0 
写完了;老费劲了;

try.rar (64.76 KB)
2019-12-11 13:13
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:109
专家分:0
注 册:2009-3-17
得分:0 
我忽然有种预感!过两天,楼主会不会再发一个更大的111.txt,让我改写代码?
2019-12-11 13:21
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
晕,这么大的图像啊,1倍时就要出滚动条。服了。

我的代码修改如下部分以便适合你这样经常改大小的情况。
1、BAS 中,
'坐标最大值,根据实际来定义,从0起
'Public Const MaxX = 71          '72个格子
'Public Const MaxY = 79          '80个格子
改成下面这行
Public MaxX As Long, MaxY As Long

'读取的整个数据
'Public D(MaxX, MaxY) As 数据结构
改成下面这行
Public D() As 数据结构

2、FORM中
Private Sub Form_Load()   
在这个过程中,开头就增加3行
MaxX = 204 - 1
MaxY = 225 - 1
ReDim D(MaxX, MaxY)
为什么要减1,因为数据起始从0开始,所以需要减1.

------------修改方向
1、建立打开文件的按钮,来调用 这二行
Call 读数据文件("111.txt")
Call 绘图(Picture1)

2、读数据文件前,要求输入图像大小。
然后保存到 maxx 和 maxy 变量中去,同时重新执行 ReDim D(MaxX, MaxY) 。




授人于鱼,不如授人于渔
早已停用QQ了
2019-12-11 17:52



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




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

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