Z Zephyr Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-17 #1 我得到了位图句柄(hBitmap),却不能将它转化为位图对象(TBitmap),用 Bitmap.Handle := Handle 这样的方法不行。 有谁知道怎么做?
Z Zephyr Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-17 #3 我是这样做的:我在程序中用TImageList.GetImageBitmap获得一个HBITMAP,然后 Image1.Picture.Bitmap.Handle := hBmp; //Image1是TImage 但Image1怎么也不能正确显示出该位图,只有在Image1左上方出现一个象素, 而Image1.Picture.Bitmap.Width和Height属性却又正常。 不知这样有没有搞错呢?
我是这样做的:我在程序中用TImageList.GetImageBitmap获得一个HBITMAP,然后 Image1.Picture.Bitmap.Handle := hBmp; //Image1是TImage 但Image1怎么也不能正确显示出该位图,只有在Image1左上方出现一个象素, 而Image1.Picture.Bitmap.Width和Height属性却又正常。 不知这样有没有搞错呢?
G GGCAT Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-18 #5 最好用 Bitblt 把hbitmap 画到你自己的Bitmap上去,保证万无一失. 具体参照win32 的Help
L lhz Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-18 #6 你把Image1的AutoSize/Stretch/Center/Transparent等属性调整一下看看? 我从来都是直接将HBITMAP赋值给Image->Picture->Bitmap->Handle。当然 我用的是BCB4。不过没有试过从ImageList得到的HBITMAP。
你把Image1的AutoSize/Stretch/Center/Transparent等属性调整一下看看? 我从来都是直接将HBITMAP赋值给Image->Picture->Bitmap->Handle。当然 我用的是BCB4。不过没有试过从ImageList得到的HBITMAP。
Z Zephyr Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-19 #7 to GGCAT:用Bitblt?那Palette怎么办?用谁的呢?(我先试试看吧,谢谢) to lhz:我想和这些属性没什么关系吧(我试过了)。从ImageList得到的HBITMAP有什么 不同吗?
to GGCAT:用Bitblt?那Palette怎么办?用谁的呢?(我先试试看吧,谢谢) to lhz:我想和这些属性没什么关系吧(我试过了)。从ImageList得到的HBITMAP有什么 不同吗?
G GGCAT Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-19 #8 bitbit 将采用目的方的调色板,如果两边都是TrueColor,保证没问题,如果 源是True Color ,目标是Index ,则会自动化匹配. 反之更没问题了。 什么? Index to Index ,sorry ,没试过...
bitbit 将采用目的方的调色板,如果两边都是TrueColor,保证没问题,如果 源是True Color ,目标是Index ,则会自动化匹配. 反之更没问题了。 什么? Index to Index ,sorry ,没试过...
L lhz Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-19 #9 这些属性在某些情况下是有关系的. 比如Image->Width=1,Image->Height=1时, Image->AutoSize==false, 则它总是只能显示一个象素. 我不知道从ImageList中得到的HBITMAP有什么不同, 我从来没有用过从 ImageList中得到的HBITMAP. 我用的HBITMAP都是调用系统函数从内存块 或BMP文件生成的.
这些属性在某些情况下是有关系的. 比如Image->Width=1,Image->Height=1时, Image->AutoSize==false, 则它总是只能显示一个象素. 我不知道从ImageList中得到的HBITMAP有什么不同, 我从来没有用过从 ImageList中得到的HBITMAP. 我用的HBITMAP都是调用系统函数从内存块 或BMP文件生成的.
Z Zephyr Unregistered / Unconfirmed GUEST, unregistred user! 2000-10-02 #10 看样子大家对我的问题不太感兴趣啊。 我把问题说清楚些吧。 我其实是想在程序中提供这样一个功能:用户可以自行定义工具条按钮图标和菜单上的图标, 并能在退出程序时保存下来。由于工具条按钮和菜单上的图标都是用ImageList提供的,而 TImageList又没有LoadFromFile/SaveToFile或LoadFromStream/SaveToStream之类的方法, 我只好自己写代码来保存了。我原本以为用TImageList.GetImageBitmap获得一个HBITMAP, 然后把它赋给一个TBitmap对象,然后用TBitmap.SaveToStream的方法保存即可,但没想到 却遇到了上面所说的问题,被卡住了。希望各位能继续提供一点提示。若分数不够的话还 可以再加。
看样子大家对我的问题不太感兴趣啊。 我把问题说清楚些吧。 我其实是想在程序中提供这样一个功能:用户可以自行定义工具条按钮图标和菜单上的图标, 并能在退出程序时保存下来。由于工具条按钮和菜单上的图标都是用ImageList提供的,而 TImageList又没有LoadFromFile/SaveToFile或LoadFromStream/SaveToStream之类的方法, 我只好自己写代码来保存了。我原本以为用TImageList.GetImageBitmap获得一个HBITMAP, 然后把它赋给一个TBitmap对象,然后用TBitmap.SaveToStream的方法保存即可,但没想到 却遇到了上面所说的问题,被卡住了。希望各位能继续提供一点提示。若分数不够的话还 可以再加。
P pengyt Unregistered / Unconfirmed GUEST, unregistred user! 2000-10-02 #11 var mybitmap: tbitmap; begin mybitmap:=tbitmap.create; try imagelist1.GetBitmap(1,mybitmap); image1.picture.bitmap.assign(mybitmap); image1.refresh; finally mybitmap.free; end; end; 如果是为了实现你所说的功能, 我建议你使用多个 imagelist , 每个 imagelist 中包含有一组 你所需要的图标,到时你只要更换 工具条的 imagelist 就可以了
var mybitmap: tbitmap; begin mybitmap:=tbitmap.create; try imagelist1.GetBitmap(1,mybitmap); image1.picture.bitmap.assign(mybitmap); image1.refresh; finally mybitmap.free; end; end; 如果是为了实现你所说的功能, 我建议你使用多个 imagelist , 每个 imagelist 中包含有一组 你所需要的图标,到时你只要更换 工具条的 imagelist 就可以了
G GGCAT Unregistered / Unconfirmed GUEST, unregistred user! 2000-10-03 #16 vary simple ! b:=Tbitmap.Create; b.handle:=AimageList.GetImageBitmap; b.handletype:=bmDIB; //就靠它了 b.savetostream(..... 来分
vary simple ! b:=Tbitmap.Create; b.handle:=AimageList.GetImageBitmap; b.handletype:=bmDIB; //就靠它了 b.savetostream(..... 来分
G GGCAT Unregistered / Unconfirmed GUEST, unregistred user! 2000-10-15 #18 >> Sorry,我先试试看再说。 Zephyr:试好没有?
Z Zephyr Unregistered / Unconfirmed GUEST, unregistred user! 2000-10-27 #19 Sorry,很久没来大富翁了。 GGCAT的方法可行,但我最后决定还是用另一种方法来解决。