66357347

所属分类:GDI/图象编程
开发工具:Visual Basic
文件大小:349KB
下载次数:17
上传日期:2013-08-04 20:39:11
上 传 者ip222ddd
说明:  VB使用GDI+显示PNG,将两幅图片叠加,有需要的就下载吧。
(VB use GDI+ display PNG, the superposition of two picture, has the need to download it.)

文件列表:
1.png (25796, 2010-01-06)
Bas (0, 2010-01-06)
Bas\ModPaintPNG.bas (4310, 2010-10-09)
Frm (0, 2010-01-06)
Frm\frmMain.frm (1328, 2010-10-09)
Frm\frmMain.frx (485210, 2010-01-06)
PaintPNG.vbp (942, 2010-01-06)
PaintPNG.vbw (86, 2010-10-09)

使用GDI+显示PNG图象,以及显示PNG图象时大小不正常的解决方案(VB6.0代码) 正在赶代码中. 其中一段界面效果里需要显示一个半透明的PNG图象,于是使用之前在网上搜索的一段代码,是封装为一个模块的. 结果发现一个怪异的事情,就是显示出来的PNG图象始终比它属性里的大小要大一定比例,约1.5倍左右... 真是怪哉..... 其显示部分的代码片段: Public Sub PaintPng(ByVal sFileName As String, ByVal hdc As Long, ByVal mX As Long, ByVal mY As Long) Call GDI_Initialize If GdipCreateFromHDC(hdc, gdip_Graphics) <> Ok Then GdiplusShutdown gdip_Token Else Call GdipLoadImageFromFile(StrConv(GetShortName(sFileName), vbUnicode), gdip_pngImage) Call GdipDrawImage(gdip_Graphics, gdip_pngImage, mX, mY) End If Call GDI_Terminate End Sub 就这几句,问题是,图象死活要大,非常非常之不解...... 使用PS做了N个新的PNG图象,结果一样,不得不怀疑代码了. 然后又下载了另几个版本的代码,发现有一个代码可以正常显示同一PNG图象(下载地址: http://tieba.baidu.com/f?kz=669546344) 一分析,发现显示所用的API不是GdipDrawImage,而是GdipDrawImageRect,后者除了指定了一个左上角坐标外,还有两个参数是指定宽与高的. 当下就改了一下封装,测试通过,PNG图象以其原大小显示出来了,代码如下: Public Sub PaintPng(ByVal sFileName As String, ByVal hdc As Long, ByVal mX As Long, ByVal mY As Long) Dim lngHeight As Long, lngWidth As Long Call GDI_Initialize If GdipCreateFromHDC(hdc, gdip_Graphics) <> Ok Then GdiplusShutdown gdip_Token Else Call GdipLoadImageFromFile(StrConv(GetShortName(sFileName), vbUnicode), gdip_pngImage) Call GdipGetImageHeight(gdip_pngImage, lngHeight) '取高度 Call GdipGetImageWidth(gdip_pngImage, lngWidth) '取宽度 Call GdipDrawImageRect(gdip_Graphics, gdip_pngImage, mX, mY, lngWidth, lngHeight) End If Call GDI_Terminate End Sub 这下总算正常了,感谢一下作者rewarddiy:) 继续折腾代码去,哎~~~~~~~~~ BY 嗷嗷叫的老马 2010-01-06 3:25

近期下载者

相关文件


收藏者