VB用什么API实现Picture1.Cls这个方法同样的功能?

如上图,在UserControl里面的代码,放大、缩小图像我直接用Pic.Cls,然后用StretchBlt画,都正常没问题。但是在模块里的回调函数PhotoCtrlPr... 如上图,在UserControl里面的代码,放大、缩小图像我直接用Pic.Cls,然后用StretchBlt画,都正常没问题。

但是在模块里的回调函数PhotoCtrlProc里面,我直接用StretchBlt画,放大图像没问题,缩小图像问题就来了,没Cls就会出现残影(在UserControl里面缩小图像,先Pic.Cls,然后再用StretchBlt画就不会有残影)。
所以请教在模块中用什么API,可以实现Cls这个方法同样的功能呢?
因字数超出限制,我只能截图了。
pic不是form中的,是UserControl中的。Cls的问题已用rectangle 函数解决,现在的问题是用StretchBlt绘制了后,wm_paint后图像又恢复成没绘制前的状态(尺寸和大小)
现在想问的是:用StretchBlt绘制了后,怎样让它绘制的图像保持下来(持续输出?)
展开
 我来答
百度网友bdb9803
推荐于2016-07-22 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:53%
帮助的人:1亿
展开全部
你可以将PictureBox作为参数传到模块里,这样就可以在模块里使用Cls方法了。
更多追问追答
追问
试过了,不行。比如Public pBox as PictureBox,然后Set pBox=Pic
在模块里pBox.Cls然后用StretchBlt画
结果是放大、缩小图像,图像闪了一下就没了
追答
模块中代码改成这样试试:

Public Function PhotoCtrlProc(ByVal pic As PictureBox, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
............
............
pic.Cls
StretchBlt pic.hDC, xx, yy, rW, rH, memDC, 0, 0, w, h, vbSrcCopy
End Function

调用的时候:
PhotoCtrlProc Picture1, Msg, wParam, lParam
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
网海1书生
科技发烧友

2014-08-24 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
在模块里你可以这样:
Form1.pic.Cls
也就是加上窗体名即可调用
追问
现在有个新问题,请问:用 StretchBlt(imgHDC,x,y,rw,rh,memDC,0,0,w,h,vbSrcCopy) 绘制在imgHDC上的图像,怎样imgHDC上的图像保持持续输出?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wagpin
2014-08-25 · 超过34用户采纳过TA的回答
知道答主
回答量:210
采纳率:0%
帮助的人:68.5万
展开全部
有没有打开双缓冲绘制;
或者用 rectangle 函数 用白色在整个绘图区屏成白色, 实现清屏。
再不行,就手动实现双缓冲,在内存中定义一个相同大小的绘图区,并绘制图形,最后把内存图 整个复制到 窗体图区。
更多追问追答
追问
请问,用 StretchBlt(imgHDC,x,y,rw,rh,memDC,0,0,w,h,vbSrcCopy) 绘制在imgHDC上的图像,怎样imgHDC上的图像保持持续输出?
追答

 


usercontrol自定义控件的autoredraw属性改为true,即打开双缓冲绘图机制

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式