一个关于图形调用的简单的问题!!100分悬赏!!(100分)

  • 主题发起人 主题发起人 风宇
  • 开始时间 开始时间

风宇

Unregistered / Unconfirmed
GUEST, unregistred user!
相信各位都用过3721或是其网络特快,或者是网际快车,我在用exescope查看其内部
资源时发现,他们的主程序都是通过调用一长幅有许多相邻图像的图片来满足程序中
所有工具条状态切换或是按钮状态切换所需图形的(不知你们这样查看过没有),请
问这种方法是怎样实现的,怎样才能确定你调用的图形,因为那一长条图形上有不
下于10个图形。最好能举个例子!
 
每个图片都是定长的,一样大小,比如说宽长度都是为20,那么第一幅图就取第一个20,第二幅
图就取第二个20,一般都是用的API函数BitBlt.
BitBlt(Image1.Canvas.Handle,0,0,Screen.Width,Screen.Height,GetDC(0),0,0,SRCCOPY);
便是将当前屏幕抓到Image1中.而要抓图中不同的部分,你动态修改nXSrc,nYSrc参数,这是源
图中的X,Y起始抓图坐标位置,你自己去看看这个函数帮助介绍,就知道该怎么做了.自己试了
后印像才会深一些.
 
to zhangkan
能否就我所提问题举一个例子,我认为他们是将这些图片做到了资源文件中,然后在
程序中调用的,那么在程序中读取资源文件中的图形应用在例如speedbutton或是Tollbar
上用这个函数应如何写法,另外该函数的最后一个参数的几个取值能否讲解一下!!
 
可以先搞到imagelist中去,然后imagelist1.getbitmap(index, speedbutton1.gluph.bitmap);
就可以了.
 
如果你做过游戏就知道,很多地图都是这样的!
 
配合其他函数 BitBlt 可以把按钮中图片中某种颜色搞透明,
比如你把空白位置涂成粉红色,之后把它弄透明。
 
用资源文件
 
我想你们都还没有明白我的意思,那么请各自用ExeScope来查看一下FoxMail的主程序,
(不要说不知道ExeScope这个程序啊!!:> ) )
那么就会明白我的问题的要点了!!!
 
就是放到imagelist中去啊, 而在imagelist中图象的保存方式就是你
所说的一长条!!
你可以自己写一个小程序,弄一个imagelist,保存几个图标进去,
然后用你说的ExeScope来看,那么你就能明白我的解答的要点了!!!
 
我试过!
没有!!
我想它可能是保存在资源文件中载入的,可是在资源文件中用IMAGELIST如何调用啊!!!
 
风宇
请问你有没有试过这种情况,加一幅图到ImageList,发现得两幅小图.
对了,这就是你的答案.
1.读出Res中的长条图形
2.加载到ImageList
3.按lmageList的Index读出你所需要的图标.
OK
 
那么3721中图形化的按钮是如何做的呢,它可以有两种形态,按下与弹起。查看内部资源,
同样是由一些等距长条小图片组成,请问这个是如何做的,是用的什么控件。
 
后退
顶部