首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

兑现一图片显示,原比例显示图片,大于控件大小可用鼠标拖动浏览

2012-12-29 
实现一图片显示,原比例显示图片,大于控件大小可用鼠标拖动浏览实现一图片显示,原比例显示图片,大于控件大

实现一图片显示,原比例显示图片,大于控件大小可用鼠标拖动浏览
实现一图片显示,原比例显示图片,大于控件大小可用鼠标拖动及滚动条浏览
[解决办法]
Picture控件就行,但PB做这个,功能有限!
[解决办法]
建议使用Pegasus ImagXpress Pro Pegasus ImagXpress Pro(有特别版)

国外知名图像处理软件公司力作,提供专业的图像处理功能,用于开发文档图像管理应用程序包括图形编辑、浏览、打印、扫描、格式转换等功能,支持多达30种文件格式的处理并提供完整复杂的图形处理函数,并且速度极快。ImageXress可以很方便地处理图形的旋转、透明、动画、修剪的功能,提供多中图像调整算法,先进的进程管理,自动调整尺寸,JPEG2000和JPEG图像的免失真效果。 



[解决办法]
up..................................
[解决办法]
up.................................
[解决办法]
用.NET写吧。我也没有做过。用.NET写个控件
[解决办法]
呵呵,你的pb哪个版本,N年前有写过的,发个邮箱我重写一个给你~~
[解决办法]

引用:
建议使用Pegasus ImagXpress Pro Pegasus ImagXpress Pro(有特别版)

国外知名图像处理软件公司力作,提供专业的图像处理功能,用于开发文档图像管理应用程序包括图形编辑、浏览、打印、扫描、格式转换等功能,支持多达30种文件格式的处理并提供完整复杂的图形处理函数,并且速度极快。ImageXress可以很方便地处理图形的旋转、透明、动画、修剪的功能,提供多中图像调整算法,先进的进程管理,自动调整尺寸,JPEG2000和JPEG图像的免失真效果。

有破解的,发一个共享
[解决办法]
//====================================================================   
//   函数:   of_getpicturesize()   pb11.5
//--------------------------------   
//   描述:   获得图片文件的图像尺寸大小(支持GIF,JPG,BMP,PNG格式)   
//--------------------------------   
//   参数:     
// value         string as_FileName           图片文件名称   
// reference long     al_PictureWidth   返回图片宽度   
// reference long     al_PictureHeight 返回图片高度   
//--------------------------------   
//   返回值:     integer 1   -   成功,0   -   失败   
//--------------------------------   
 
 
Integer   li_File,   li_DataRead   
Blob   lb_Data   
Long   ll_FileLength,ll_PictureWidth,ll_PictureHeight   
Long   ll_DataLen,ll_DataPos,ll_FilePos   
Boolean   lb_LoopFlag   =   True   
Char   lc_Char1,lc_Char2   
 
//文件不存在   
If   Not   FileExists(as_FileName)   Then   Return   0   
 
//取文件大小   
ll_FileLength   =   FileLength(as_FileName)   
 
//打开文件   
li_File   =   FileOpen(as_FileName,StreamMode!)   
If   li_File   =   -1   Then   Return   0   


 
//读取文件   
li_DataRead   =   FileRead(li_File,lb_Data)   
If   li_DataRead   <=   0   Then   
FileClose(li_File)   
Return   0   
End   If   


//Int li_rtn
//Byte lb_byte
////myBlob = Blob (sle_1.text, EncodingUTF8!)
//li_rtn = GetByte(lb_Data, 18, lb_byte)
//

Byte ly_byte[]
ly_byte[] = GetByteArray(lb_Data)
//messagebox("getbyte", string(lb_byte))


//   GIF目前主要有两种类型   
//   1.   标识为GIF87a,   只是用来存储单幅静止图像   
//   2.   标识为GIF89a,   可以同时存储若干幅静止图像并进而形成连续的动画   
//   文件的前   6   个字节为标识:GIF87a   或   GIF89a,   第   7,8   字节为图像宽度(width),     
//   第   9,10   字节为图像高度(height),   注意两个字节中低位在前   
 
//   GIF   文件格式判断   
If   String(BlobMid(lb_Data,1,4),EncodingANSI!)   =   'GIF8'   Then   
  ll_PictureWidth=  ly_byte[7]+ly_byte[8]*256
  ll_PictureHeight=  ly_byte[9]+ly_byte[10]*256

End   If   
 
//   JPEG文件格式   
//   前   3   个字节为标识:   0xFF,0xD8,0xFF   
If   ly_byte[1]  =   255   and ly_byte[2]   = 216  and ly_byte[3] = 255   Then   
ll_DataLen   =   Len(lb_Data)   
ll_DataPos   =   3   
ll_FilePos   =   3   
Do   While   lb_LoopFlag   
ll_DataPos   =   ll_DataPos   +   1   
ll_FilePos   =   ll_FilePos   +   1   
If   ly_byte[ll_DataPos]    =   255   And   ly_byte[ll_DataPos   +   1]   <>   255   Then   
If   ly_byte[ll_DataPos   +   1]   >=   192   And   ly_byte[ll_DataPos   +   1]   <=   195   Then   
//找到尺寸数据   
ll_PictureWidth   = ly_byte[ll_DataPos   +   7]    *    256   +   ly_byte[ll_DataPos   +   8] 
ll_PictureHeight   =  ly_byte[ll_DataPos   +   5]    *   256   +   ly_byte[ll_DataPos   +   6] 
lb_LoopFlag   =   False   
Else   
//没有找到尺寸数据,重新读取文件   


ll_FilePos   =   ll_FilePos   +   ly_byte[ll_DataPos + 3]    *   256   +   ly_byte[ll_DataPos + 2]    +   1   
If   ll_FilePos   >   ll_FileLength   Then   
FileClose(li_File)   
Return   0   
Else   
FileSeek(li_File,ll_FilePos)   
FileRead(li_File,lb_Data)   
ll_DataLen   =   Len(lb_Data)   
ll_DataPos   =   0   
End   If   
End   If   
End   If   
If   ll_DataPos   =   ll_DataLen   -   9   And   lb_LoopFlag   =   True   Then   
ll_FilePos   =   ll_FilePos   -   9   
FileSeek(li_File,ll_FilePos)   
FileRead(li_File,lb_Data)   
ll_DataLen   =   Len(lb_Data)   
ll_DataPos   =   0   
End   If   
If   ll_FilePos   >=   ll_FileLength   Then   
lb_LoopFlag   =   False   
End   If   
Loop   

End   If   
 
//   BMP文件格式   
//   前两个字节是标识:标识可能有很多种   
//   第   19,20,21,22   字节为宽度(width),   第   23,24,25,26   字节为高度(height)   
//   四个字节组成dword,   低位在前   
If   String(BlobMid(lb_Data,1,2),EncodingANSI!)   =   'BM'   Then   
ll_PictureWidth=  ly_byte[19]+ly_byte[20]*256+ly_byte[21]*65536+ly_byte[22]*16777216
ll_PictureHeight=  ly_byte[23]+ly_byte[24]*256+ly_byte[25]*65536+ly_byte[26]*16777216
End   If   

If   ly_byte[2]  =   asc('P')  and ly_byte[3] = asc('N')  and ly_byte[4] = asc('G')Then
ll_PictureWidth=  ly_byte[20]+ly_byte[19]*256+ly_byte[18]*65536+ly_byte[17]*16777216
ll_PictureHeight=  ly_byte[24]+ly_byte[23]*256+ly_byte[22]*65536+ly_byte[21]*16777216
End   If   

If   ll_PictureWidth   >   0   And   ll_PictureHeight   >   0   Then   
al_PictureWidth   =   ll_PictureWidth   
al_PictureHeight   =   ll_PictureHeight   
//将图像的真实大小转换为PBUnit大小,并返回   
al_PictureWidth   =   PixelsToUnits(ll_PictureWidth,XPixelsToUnits!)   
al_PictureHeight   =   PixelsToUnits(ll_PictureHeight,YPixelsToUnits!)   
FileClose(li_File)   
Return   1   


Else   
FileClose(li_File)   
Return   0   
End   If   
 
Return   0   

[解决办法]
先頂一下.
[解决办法]
没做过,想着很简单,楼主试试:先放个容器控件例如tabpage什么的,带上滚动条
然后在里面放个图片控件以原始尺寸显示图片
当图片大于容器控件时容器控件就出现滚动条了
[解决办法]
搞错了,好像pb没这种现成带滚动条的容器控件。

[解决办法]
直接自定义custom visual,属性里scroll把横向纵向都钩上,再在上面左上角扔一个图片控件即可。保存为用户对象往窗口上放
[解决办法]
谢谢楼上的,学习了2010年3月25日 22时12分50秒

热点排行