| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1991 人关注过本帖, 1 人收藏
标题:vb6绘制活动图案-虚拟仪表的指针,每次都要更新背景,太占用系统资源了,又 ...
只看楼主 加入收藏
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:3 
有10个多个虚拟表 , 要么使用 DX 编程.
要么把 500 个图片都读到内存.使用 image 控件保存图片,不能使用 picture 控件保存图片.

不要从硬盘上读,这种读法,有可能因为硬盘读数据卡一下.
500张图片,占内存并不大,因为是GIF格式的.

授人于鱼,不如授人于渔
早已停用QQ了
2010-10-10 21:13
wangjinchao
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-4-13
收藏
得分:0 
这种回答来的干脆,还能解决实际问题。考虑程序的优化,还是想了解一下DX怎么去做,就像虚拟驾驶舱的仪表盘,做得好漂亮。
2010-10-11 07:34
wangjinchao
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-4-13
收藏
得分:0 
图片太多
事实上,经试验,为了指针的连续性,每个表盘可能加载200张图片,有点担心,图片太多了。
2010-10-11 10:35
wangjinchao
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-4-13
收藏
得分:0 
图片数组
怎样在vb里将上百张图片定义一个数组,让picture调用,形成动画效果。????
2010-10-11 17:46
wangjinchao
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-4-13
收藏
得分:0 
贴背景透明的图片
闪的更严重啦!!正在看bitblt怎么用?关于memDC方面,什么地方有详细介绍?
2010-10-14 07:04
wangjinchao
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-4-13
收藏
得分:0 
回复 风吹过b
将图片加载到内存,然后在屏幕上更新背景是透明的gif指针图像,更闪动了。内存绘图能像屏幕上那样在指定位置放置图片吗?
2010-10-14 07:38
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
内存绘的图, 如在 picture 里的.
可以复制到指定的位置去.

Picture1.PaintPicture 源图像, 左上角X, 左上角Y, 目标图像宽, 目标图像高, 源图像复制位置X, 源图像复制位置Y, 源图像复制范围宽, 源图像复制范围高,复制模式
加载的图像,源图像使用 picture 来得到.如 picture1.picture
绘图的图像,源图像使用 image 来得到.如 picture1.image

复制模式参数为以下常数:
常数 值 描述
vbDstInvert &H00550009 反转目标位图
vbMergeCopy &H00C000CA 合并模式和源位图
vbMergePaint &H00BB0226 用 Or 运算合并反转的源位图和目标位图
vbNotSrcCopy &H00330008 将反转的源位图复制到目标
vbNotSrcErase &H001100A6 用 Or 运算合并源位图和目标位图,然后反转
vbPatCopy &H00F00021L 将模式复制到目标位图
vbPatInvert &H005A0049L 用 Xor 运算合并目标位图与模式
vbPatPaint &H00FB0A09L 用 Or 运算合并反转的源位图与模式。然后用 Or 运算合并上述结果与目标位图
vbSrcAnd &H008800C6 用 And 运算合并目标像素与源位图
vbSrcCopy &H00CC0020 将源位图复制到目标位图
vbSrcErase &H00440328 反转目标位图并用 And 运算合并所得结果与源位图
vbSrcInvert &H00660046 用 Xor 运算合并目标像素和源位图
vbSrcPaint &H00EE0086 用 Or 运算合并目标像素和源位图

我没去测试,应该有一个模式,再加上 背景像的配合应该可以达到 透明的效果吧.不知道.
发个测试工程出来.有我空时也看看.

授人于鱼,不如授人于渔
早已停用QQ了
2010-10-14 09:46
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
找到了一个方法,你再试试这个方法.参考下面的贴子.

https://bbs.bccn.net/viewthread.php?tid=147329&page=1#pid869135
7楼那个.

注意,7楼是使用了循环在360度画图案.

我测试用的代码是用它中间的.

    picBck.AutoRedraw = True
    picBck.Cls
    DanRotate picBck.hDC, 200, 300, 30, picCol.hDC, 250, 250, 240, 240
    'picBck.Refresh         '测试结果是此命令会把刚绘制的图像冲掉,取消
    DoEvents
--------------------
它的函数的定义参数的中文意思,我刚翻了一下.
Public Sub DanRotate(ByRef 目标HDC As Long, 目标图像X As Long, 目标图像Y As Long, _
ByVal 旋转角度 As Long, _
ByRef 源图像HDC As Long, 源图像X As Long, 源图像Y As Long, _
ByVal 源图像宽 As Long, ByVal 源图像高 As Long)

它里面不缩放图像

[ 本帖最后由 风吹过b 于 2010-10-14 11:25 编辑 ]

授人于鱼,不如授人于渔
早已停用QQ了
2010-10-14 11:17
wangjinchao
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-4-13
收藏
得分:0 
回复 17楼 风吹过b
我现在是背景是一张图片,在背景上重叠一张image图片,gif格式,背景是透明的。然后定时更新透明图片,在更新过程中,亮白色猛闪一下,但图片没有一个地方是白色的。
2010-10-14 11:48
wangjinchao
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-4-13
收藏
得分:0 
这种方式更耗cpu
还是画指针吧,怎样将原来画指针的地方背景保存起来,在新的指针将要绘画前,将原来被指针覆盖的背景恢复了?
2010-10-14 12:23
快速回复:vb6绘制活动图案-虚拟仪表的指针,每次都要更新背景,太占用系统资源了 ...
数据加载中...
 
   



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

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