求助VB6.0高手,谁能帮助做一个透明的Picture控件。在线等,急用。谢谢大家了
在picture中。我用的是pset画图,还用到了取像素点函数。如果觉得分低的话,做好后还可以在加分...
在picture中。我用的是pset画图,还用到了取像素点函数。如果觉得分低的话,做好后还可以在加分
展开
展开全部
这个其实比较麻烦。按你这说法真正的难点在于两张图片的拼合。
取点之类的问题很容易解决,多留一个PicBox就是了,隐藏起来,只有画的点。
拼合有两个办法:
1、 用 BitBlt 实现。但是你得实时的生成一个掩码图(就是需要覆盖的地方涂黑,需要透过的留白)。
Private Declare Function BitBlt Lib "gdi32" ( ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop AsLong ) AsLong
PrivateSub Command1_Click ( )
BitBlt 目标图.hDC, ( 目标图.Width / 2 - 掩码图.Width / 2 ) / 15,0, 掩码图.Width / 15, 掩码图.Height / 15, 掩码图.hDC, 0,0, vbSrcAnd
BitBlt 目标图.hDC, ( 目标图.Width / 2 - 掩码图.Width / 2 ) / 15,0, 掩码图.Width / 15, 掩码图.Height / 15, 源图.hDC, 0,0, vbSrcInvert
EndSub
2、用 AlphaBlend 和 TransparentBlt 解决。
这个也挺麻烦,篇幅较长,你自己百度一下。这里给你留下函数声明。
Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdc As Long, ByVal nXoriginDest As Long, _
ByVal nYOriginDest As Long, ByVal nWidthDest As Long, _
ByVal nHeghtdest As Long, ByVal hdcSrc As Long, _
ByVal nXOriginSrc As Long, ByVal nYOriginSrc As Long, _
ByVal nWidthSrc As Long, ByVal nHeightSrc As Long, _
ByVal blendFunction As BLENDFUNCT) As Long
Private Declare Function TransparentBlt Lib "msimg32.dll" _
(ByVal hdcDest AsLong, _
ByVal nXOriginDest AsLong, _
ByVal nYOriginDest AsLong, _
ByVal nWidthDest AsLong, _
ByVal nHeightDest AsLong, _
ByVal hdcSrc AsLong, _
ByVal nXOriginSrc AsLong, _
ByVal nYOriginSrc AsLong, _
ByVal nWidthSrc AsLong, _
ByVal nHeightSrc AsLong, _
ByVal crTransparent AsLong _
) AsLong
取点之类的问题很容易解决,多留一个PicBox就是了,隐藏起来,只有画的点。
拼合有两个办法:
1、 用 BitBlt 实现。但是你得实时的生成一个掩码图(就是需要覆盖的地方涂黑,需要透过的留白)。
Private Declare Function BitBlt Lib "gdi32" ( ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop AsLong ) AsLong
PrivateSub Command1_Click ( )
BitBlt 目标图.hDC, ( 目标图.Width / 2 - 掩码图.Width / 2 ) / 15,0, 掩码图.Width / 15, 掩码图.Height / 15, 掩码图.hDC, 0,0, vbSrcAnd
BitBlt 目标图.hDC, ( 目标图.Width / 2 - 掩码图.Width / 2 ) / 15,0, 掩码图.Width / 15, 掩码图.Height / 15, 源图.hDC, 0,0, vbSrcInvert
EndSub
2、用 AlphaBlend 和 TransparentBlt 解决。
这个也挺麻烦,篇幅较长,你自己百度一下。这里给你留下函数声明。
Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdc As Long, ByVal nXoriginDest As Long, _
ByVal nYOriginDest As Long, ByVal nWidthDest As Long, _
ByVal nHeghtdest As Long, ByVal hdcSrc As Long, _
ByVal nXOriginSrc As Long, ByVal nYOriginSrc As Long, _
ByVal nWidthSrc As Long, ByVal nHeightSrc As Long, _
ByVal blendFunction As BLENDFUNCT) As Long
Private Declare Function TransparentBlt Lib "msimg32.dll" _
(ByVal hdcDest AsLong, _
ByVal nXOriginDest AsLong, _
ByVal nYOriginDest AsLong, _
ByVal nWidthDest AsLong, _
ByVal nHeightDest AsLong, _
ByVal hdcSrc AsLong, _
ByVal nXOriginSrc AsLong, _
ByVal nYOriginSrc AsLong, _
ByVal nWidthSrc AsLong, _
ByVal nHeightSrc AsLong, _
ByVal crTransparent AsLong _
) AsLong
更多追问追答
追问
取点之类的问题很容易解决,多留一个PicBox就是了,隐藏起来,只有画的点。
这个问题不太明白,能够详细讲解一下啊?
追答
不好理解吗? 你专门留一个Pic,隐藏的,绘图时在显示Pic上画一个,在这个隐藏Pic上也画一个。
显示Pic随便怎么处理,这个专门用来取点。 OK了。
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
展开全部
透明 显示窗体?
更多追问追答
追问
不是,有两个picture,上层透明是为了显示下层picture中的图片,上层Picture还要画图呢
追答
都画一个里不就解决了么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
窗体可以透明
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
还用到了
追问
啥意思啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询