关于控件透明的处理(在线等候!)

Tsou 2002-06-11 09:49:00
使用过K3报表套打设计器的大虾们,帮忙:怎样设计出类似其一样的透明控件?
...全文
80 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tsou 2002-06-12
  • 打赏
  • 举报
回复
从昨天问到今天怎没有人帮呢?
Tsou 2002-06-12
  • 打赏
  • 举报
回复
不能够实现但是我结贴
zyl910 2002-06-12
  • 打赏
  • 举报
回复

BackStyle 属性 (UserControl 对象)


返回或设置指示控件背景类型的数值。

语法

object.BackStyle [= enum]

BackStyle 属性的语法包含下面部分:

部分 描述
object 对象表达式,其值为“应用于”列表中的对象。
enum 枚举值,它决定控件背景的显示方式,如“设置值”中所描述。


设置值

enum 的设置值为:

设置值 描述
1-Opaque (缺省)不透明的背景。控件接收所有的鼠标事件。
2-Invisible 只有当 Windowless 属性设置为 True 才能应用。否则行为与透明 BackStyle 一样。


说明

当 enum 设置为 2 ,则 Windowless 属性设为 True的控件外观和行为基于 MaskPicture、 MaskColor、 HitBehavior 和 ClipBehavior 属性的设置。
lkx5200 2002-06-12
  • 打赏
  • 举报
回复
我也不会。看了干着急。我才学VB的。:)相信很快的。
Tsou 2002-06-12
  • 打赏
  • 举报
回复
没有人回答?
jokingjun 2002-06-11
  • 打赏
  • 举报
回复
VB中实现位图的透明放置

我们在开发一个软件中,通过扫描仪输进了大量实景图片,这些图片是以位图格式存储的,实际需要将这些图片透明放置到多彩色背景上,而在我们所使用的Visual Basic for Windows开发环境中,只能将WMF格式的矢量图(通过Image控件装载)透明放置到多彩色复杂背景图上,对位图只能象照片一样将图片上的每一个点阵信息贴到复杂背景上。本文讨论的问题就是如何将位图透明放置到多色彩背景上,用于实现不规则前景在复杂背景上的动画,并给出了源程序。
首先将图片通过扫描仪输入到计算机,以*.BMP格式存盘,然后利用图象处理软件对扫进的图片进行加工,加工过程中应注意:将来准备放到复杂背景上的信息不能是黑色,不准备放到复杂背景上的信息要过滤掉,一律置成黑色。只有这样才能实现将位图上所关注的形状不规则信息透明放置到多彩复杂背景上,且不覆盖背景。我们主要使用Windows的API函数BITBLT产生此效果。
基本步骤如下:
(1)首先在Forml上创建3个Picture控制,Name属性分别为PicCel(装载前景位图)、Picmatte(存放前景位图的黑白模板)、Bkgrd(存放复杂背景图象),再创建一个命令控制按钮Commondl。在PicCel上装入一幅黑色背景下的彩色位图;
(2)将PicCel上的图象拷贝到Picmatte上,然后在Picmatte上进行工作,即在Picmatte上逐行逐点扫描位图信息,凡是非黑色象素点将其置成白色,这样在Picmatte上产生了PicCel的一个黑白模板,Picmatte上的彩色图象大小和PicCel一样,只是将PicCel上的非黑色信息转换成白色;
(3)PicCel和Picmatte作反相invert运算产生PicCel的反相图象存于PicCel中;
(4)用或运算将Picmatte贴于复杂背景Bkgrd上;
(5)用异或运算将PicCel贴于复杂背景Bkgrd上。
程序清单如下:
1 Const srccopy=&HCC0020
2 Const srcinvert=&H660046
3 Const srcpaint=&HEE0086
4 Sub Command1 Click()
5 black=RGB(0,0,0)
6 white=RGB(255,255,255)
7 position=0’拷贝piccel到picmatte上
8 r%=bitblt(ByVal picmatte.hDC,ByVal 0,ByVal 0,ByVal piccel.width,ByVal piccel.Height,ByVal piccel.hDC,ByVal 0,ByVal 0,ByVal srccopy)
9 For scanline=0 To(piccel.Height-1)
10 Do‘取得picmatte上坐标为(position,scanline)点的颜色
11 currentcolor=getpixel(picmatte.hDC,position,scanline)
12 If currentcolor<>black Then‘如果该点不为黑色,则置为白色
13 retlong=setpixel(picmatte.hDC,position,scanline,white)
14 End If
15 position=position+1
16 Loop While position<piccel.Width
17 position=0
18 Next scanline ‘创建原位图piccel的反相图象
19 r%=bitblt(ByVal piccel.hDC,ByVal 0,ByVal 0,ByVal piccel.Width,ByVal piccel.Height,ByVal picmatte.hDC,ByVal 0,ByVal 0,srcinvert)
20 r%=bitblt(ByVal bkgrd.hDC,ByVal 10,ByVal 10,ByVal piccel.Width-1,ByVal piccel.Height-1,ByVal picmatte.hDC,ByVal 0,ByVal 0,srcpaint)
21 r%=bitblt(ByVal bkgrd.hDC,ByVal 10,ByVal 10,ByVal piccel.Width-1,ByVal piccel.Height-1,ByVal piccel.hDC,ByVal 0,ByVal 0,ByVal srcinvert)
22 End Sub
23 Sub Command2-Click()
24 End
25 End Sub
26 Sub Form-Load()
27 picmatte.Width=piccel.Width
28 picmatte.Height=piccel.Height
29 End sub






Wolfzhang 2002-06-11
  • 打赏
  • 举报
回复
更正::
将backstyle设为1,如label控件
如:
label1.backstyle=0

Wolfzhang 2002-06-11
  • 打赏
  • 举报
回复
更正::
将backstyle设为1,如label控件
如:
label1.backstyle=0
Wolfzhang 2002-06-11
  • 打赏
  • 举报
回复
将backstyle设为1,如label控件
如:
label1.backstyle=1
Tsou 2002-06-11
  • 打赏
  • 举报
回复
技术秘密吗?
Tsou 2002-06-11
  • 打赏
  • 举报
回复
怎么没人啦!!!!!!!
Tsou 2002-06-11
  • 打赏
  • 举报
回复
大虾帮忙!!!!!!!!!
Tsou 2002-06-11
  • 打赏
  • 举报
回复
以上两位的回答都不是我的需求。如有知道的请指教。如分数不够还可以在给。

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧