标题:VB6.0如何实现像PS那样的多图层效果,是用多个picture控件叠加,还是在一个 ...
只看楼主
huangjunxing
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2014-8-13
结帖率:50%
 问题点数:0 回复次数:2 
VB6.0如何实现像PS那样的多图层效果,是用多个picture控件叠加,还是在一个picture控件里面多长重画?
VB6.0如何实现像PS那样的多图层效果,是用多个picture控件叠加,还是在一个picture控件里面多长重画?
搜索更多相关主题的帖子: 效果 picture 控件 叠加 重画 
2017-08-23 10:38
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:934
专家分:5244
注 册:2015-8-10
得分:0 
picturebox叠加?好像picturebox不能设置背景透明吧。即使可以,也不是很合理的方式
我能想到的是DX那样的方式。通过控件的刷新来确定是否需要进行绘制。 这个需要用到类或者结构体,在类或者结构体中需要定义一个图层信息,然后再重绘的时候确定是否会绘制出这个图形。

简单讲讲结构体吧
模块代码
程序代码:

Public Type  Layer
  name as String
  Show as boolean
End Type

Public Type  Circ

 LayerID as integer

 ……' 圆形元素的基本参数
End Type

Public Type  Rect

 LayerID as integer

 ……' 圆形元素的基本参数
End Type

'其他图形元素的结构体代码

Public Type  Drawing

 Circles() as Circ

 Rects() as Rect

 …… '其他图形元素
End Type

窗口代码
程序代码:
Sub Form_load()

 Dim  MyDrawing as Drawing

 ' 定义绘图中各种元素的代码,包括各元素所在的图层
 Dim Layers() as Layer

 '定义图层信息,包括是否显示
End Sub 

Sub RefreshDrwaing()
  picturebox1.cls  清屏
  For i= lbound(MyDrawing.Circles) to Ubound(MyDrawing.Circles) '遍历并绘制所有的圆
   L_ID =MyDrawing.Circles(i).LayerID 
   if Layers(L_ID).Show=True then    
     ’绘制图形代码
   else
     ’不绘制
   End if
  nexi i 

  '其他图形类似。
End Sub 

'剩下的就是在Timer或者复选框等控件事件中调用RefreshDrwaing
2017-08-23 13:40
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
图像,在内存里,使用 BMP 真彩格式。
每一层,都是一个图像。
你可以使用 PropertyBag 对象,把 picturebox 里的图像放到一个数组里,如下面的命令
Dim pb As New PropertyBag
Call pb.WriteProperty("Image", Picture3.Image)

然后对 pb.Contents 这个1维 BYTE 数组进行访问,先查找 BM 标识,找到后,从这个标志到 结尾,就是一个标准的 BMP 文件结构。
你对这个BMP文件格式的数据 进行操作,
最后 用这个命令把图像装回去,或者你手动画点都可以。
Set Picture4.Picture = pb.ReadProperty("Image")

----------------
或者你先整合每一层的数据。先定义一个颜色为透明色。如 0,0,0 为透明色,如纯白色为 1,1,1
如,该层显示,那么把该数据,按每3个元素判断一个值,不是透明色,就写到最终数组中去,如果该层有 透明值,按算法计算然后写进去。
所有的层都写完了,再把图像翻转到 picturebox 里去显示。
如果你按这个做了,把代码共享一下吧。

授人于鱼,不如授人于渔
早已停用QQ了
2017-08-23 15:18



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




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

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