vb bitbltt 生成的图片太大

匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。BitBlt截图的问题?_vb吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:96,195贴子:
BitBlt截图的问题?收藏
我想获得任一其他窗体上控件的图像,用的这个BitBlt,就是那个获得控件的大小的时候出问题了,我已经能知道控件的坐标位置,那个nwidth,nheight却怎么也得不到,怎么办? 我试验是以自己窗体上的image试验,BitBlt Picture1.hDC, -28, -359, image1.width,image1.height, GetDC(0), 0, 0, vbSrcCopy其中-28,-359是我预设的数据不用管,就是那个 image1.width,image1.height怎么也对不上号 得到的图像比预期的大,怎么办?(我的scalemode设置成的twip,不想动这个,应该不是这个的问题吧,我把它换算成pixel还是不行啊) 谢谢了!
一次新的奇迹玩法?你想成为霸服大魔王吗?
控件句柄 = WindowFromPoint(控件坐标x, 控件坐标y)控件DC = GetDC(控件句柄)Call GetWindowRect(控件句柄, 控件尺寸Rect)BitBlt .........Call ReleaseDC(控件DC)
BitBlt这个API 座标与图像宽高都是以像素(Pixel)为单位的 BitBlt Picture1.hDC, -28, -359, image1.width\15,image1.height\15, GetDC(0), 0, 0, vbSrcCopy
Property TwipsPerPixelX As Single&&&& 只读&&&& VB.Printer 的成员&&&& 返回水平测量一个对象时每个像素的缇数。 以前一直不知道15是怎么来的? BitBlt Picture1.hDC, -28, -359, image1.width\TwipsPerPixelX,image1.height\TwipsPerPixelY, GetDC(0), 0, 0, vbSrcCopy
回复cbm666老师:我就是用的这个方法但是不知为什么显不出图像?回复狮王:15似乎是某牛人计算出来的,我用过应该没问题,不过这样更好。谢谢。回复Zatans,本来想用其他方式来着,结果都行不通,就用你这个方法了,谢谢哈^v^
看来楼主对 BitBlt的概念是零分 1.抓图没问题, 比照着一张图 把它画在桌子上 在你桌子上的图画纸能出现吗 ? 你交给老师的图画纸, 看得到的宽度= 标准图的宽度 - 在桌子上的宽度, 除非你会耍魔术. 2.BitBlt 无论在座标或物件的宽度或高度 都是以Pixel像素为单位,&& image1.width与&& image1.height 都要除上 15 才行的.
15 是一个不准确的数字
回复cbm666老师:我对BitBlt的确是第一次接触,对于您说的第二点我明白那个像素转换的问题,您先看看我的代码:Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As LongPrivate 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 As Long) As LongPrivate Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As LongPrivate Type POINTAPI&& X As Long&& Y As LongEnd Type&& Dim Pt As POINTAPIPrivate Sub DisplayControlPointAtScreen(ctl As Control)&& With ctl&&&& If TypeOf ctl Is Line Then&&&&&& Pt.X = ScaleX(IIf(.X1 & .X2, .X2, .X1), ScaleMode, vbPixels)&&&&&& Pt.Y = ScaleY(IIf(.Y1 & .Y2, .Y2, .Y1), ScaleMode, vbPixels)&&&& Else&&&&&& Pt.X = ScaleX(.Left, ScaleMode, vbPixels)&&&&&& Pt.Y = ScaleY(.Top, ScaleMode, vbPixels)&&&& End If&& End With&& ClientToScreen hwnd, PtEnd Sub
Private Sub Command1_Click()'DisplayControlPointAtScreen Image1不加上上面这句得到的图片和image的尺寸一致,如下图但是加上上面这几句却什么图像也得不到了~~BitBlt Picture1.hDC, -Pt.X, -Pt.Y, Image1.Width \ 15, Image1.Height \ 15, GetDC(0), 0, 0, vbSrcCopyEnd Sub 我对这个东西没了解,请问怎么回事?
你要抓的图片 是在你桌面上的窗体里面的某个控件上的吗? 要知道 GETDC(0) 的0,0 是屏幕左上角的 0,0 不是你窗体的 0,0
对图像处理一窍不通 也不想学 图像看看还可以 要处理没兴趣
挂机一个月得百万,你还蓝瘦香菇么?
这样啊 getdc(0)那个以前没明白什么意思,直接用的
谢谢cbm666老师~
X1 = (ME.LEFT + TEXT1.LEFT)\15 Y1 =(ME.TOP + TEXT1.TOP)\15 BitBlt Picture1.hDC, 0,0,TEXT1.WIDTH \ 15,TEXT1.HEIGHT\15, GetDC(0), X1, Y1, vbSrcCopy这代码是 例如你要抓 Text1的图片
将抓到的桌面整张的图片 从 X1,Y1的地方开始抓TEXT1.WIDTH TEXT1.HEIGHT区间的图片 画到Picture1 0,0 开始到TEXT1右下角范围的图片
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或运用BitBlt函数实现多种图片出现效果_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
运用BitBlt函数实现多种图片出现效果
上传于||文档简介
&&图​片​处​理
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢2016年10月 VB大版内专家分月排行榜第二2013年11月 VB大版内专家分月排行榜第二
2016年3月 VB大版内专家分月排行榜第三2012年9月 VB大版内专家分月排行榜第三
2016年10月 VB大版内专家分月排行榜第二2013年11月 VB大版内专家分月排行榜第二
2016年3月 VB大版内专家分月排行榜第三2012年9月 VB大版内专家分月排行榜第三
2016年11月 VB大版内专家分月排行榜第二2016年1月 MS-SQL Server大版内专家分月排行榜第二2015年12月 MS-SQL Server大版内专家分月排行榜第二2015年11月 MS-SQL Server大版内专家分月排行榜第二2015年5月 MS-SQL Server大版内专家分月排行榜第二2015年4月 MS-SQL Server大版内专家分月排行榜第二2015年1月 VB大版内专家分月排行榜第二2015年1月 MS-SQL Server大版内专家分月排行榜第二2014年12月 VB大版内专家分月排行榜第二2014年11月 MS-SQL Server大版内专家分月排行榜第二2014年9月 MS-SQL Server大版内专家分月排行榜第二2013年8月 VB大版内专家分月排行榜第二2013年6月 VB大版内专家分月排行榜第二2013年5月 VB大版内专家分月排行榜第二2010年4月 VB大版内专家分月排行榜第二2010年3月 VB大版内专家分月排行榜第二2008年12月 VB大版内专家分月排行榜第二2008年8月 VB大版内专家分月排行榜第二2008年7月 VB大版内专家分月排行榜第二2007年11月 VB大版内专家分月排行榜第二
2015年6月 MS-SQL Server大版内专家分月排行榜第三2015年3月 MS-SQL Server大版内专家分月排行榜第三2015年2月 MS-SQL Server大版内专家分月排行榜第三2014年12月 MS-SQL Server大版内专家分月排行榜第三2014年10月 VB大版内专家分月排行榜第三2014年10月 MS-SQL Server大版内专家分月排行榜第三2014年8月 MS-SQL Server大版内专家分月排行榜第三2013年9月 VB大版内专家分月排行榜第三2013年3月 VB大版内专家分月排行榜第三2012年5月 VB大版内专家分月排行榜第三2012年4月 VB大版内专家分月排行榜第三2010年10月 VB大版内专家分月排行榜第三2010年8月 VB大版内专家分月排行榜第三2010年7月 VB大版内专家分月排行榜第三2009年5月 VB大版内专家分月排行榜第三2008年9月 VB大版内专家分月排行榜第三2008年4月 VB大版内专家分月排行榜第三2008年2月 VB大版内专家分月排行榜第三
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2016年10月 VB大版内专家分月排行榜第二2013年11月 VB大版内专家分月排行榜第二
2016年3月 VB大版内专家分月排行榜第三2012年9月 VB大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 vb bitblt 的文章

 

随机推荐