Xe6/Xe7中有没有带带图片的按钮?

linmutou 2014-11-06 07:03:53
Xe6/Xe7中有没有带带图片的按钮?
另外按钮自图时会出现在其父窗口上,而不是在其自身上。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Button1->Canvas->BeginScene() ;
Button1->Canvas->DrawBitmap(ImageControl1->Bitmap,TRectF(0,0,100,100),TRectF(0,0,Button1->Width,Button1->Height),1);
Button1->Canvas->EndScene() ;
}
//---------------------------------------------------------------------------

...全文
606 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
linmutou 2014-11-07
  • 打赏
  • 举报
回复
总结一下:
1、开发环境:xe7 fmx 开发android移动程序。
2、不仅仅是TButton有Canvas,就连TSpeedButton、TPanel也有Canvas。但没有内嵌图片属性。或许XE7的老大们以为有了Canvas就不必有图片这个属性了。
3、上面代码坐标应该是正确的。但是有误,出错在哪里,大家对比一下就知道。下面贴出正确代码。
void __fastcall TForm3D1::Button1Click(TObject *Sender)
{
//下面一行非常重要,没有这一行,什么效果都没有!不信的大家可以试!也就是说要重设Bitmap的大小。
Image1->Bitmap->Resize(int(Image1->Width),int(Image1->Height));
Image1->Bitmap->Canvas->BeginScene() ;//注意这一句与上面代码的区别:不是Image1->Canvas!!
//下一行:坐标并没有错!!
Image1->Bitmap->Canvas->DrawBitmap(ImageControl1->Bitmap,TRectF(0,0,100,100),TRectF(0,0,Image1->Width,Image1->Height),1);
Image1->Bitmap->Canvas->EndScene() ;
}
//---------------------------------------------------------------------------

效果图完全达到代码的效果,效果图如下:

4、如果把代码改一下:
void __fastcall TForm3D1::Button1Click(TObject *Sender)
{
Image1->Bitmap->Resize(int(Image1->Width),int(Image1->Height));
Image1->Canvas->BeginScene() ;
//下一行:坐标并没有错!!
Image1->Canvas->DrawBitmap(ImageControl1->Bitmap,TRectF(0,0,100,100),TRectF(0,0,Image1->Width,Image1->Height),1);
Image1->Canvas->EndScene() ;
}
//---------------------------------------------------------------------------

效果图如下

5、对比代码,大家应该看出来了吧:
TButton等之类的控件,有Canvas,但没有Bitmap,所以出错。
这跟控件无关,即使是Image,代码不同,效果也不同。
ccrun.com 2014-11-07
  • 打赏
  • 举报
回复
引用 5 楼 linmutou 的回复:
好什么,我说的是XE6/XE7,在这两个系列之下,根本就没有ImageList这个控件,speedbutton、toolbutton也没可以内嵌图片的属性(如果有,麻烦说明一下,反正我是搞了半天,也搞不出来!)。 还有下面的那个代码和图片,是什么原因。按代码运行的结果,不应该出现图片的结果。
你并没有明确说明是创建的适应多设备的应用工程,这样的工程用的是FMX库而不是VCL库。 你的代码中贴图的坐标不对,所以没有显示在正确的地方。另外,即使显示在正确的地方,也不会达到你想要的效果,因为Button一刷新,图片就没了。
缘中人 2014-11-07
  • 打赏
  • 举报
回复
你是vcl程序还是firemonkey程序 下图是VCL的应用程序
linmutou 2014-11-07
  • 打赏
  • 举报
回复
用Image,就相当于自己画了。自己画当然可以。 大家记得在DOS下编程吗?功能还没有实现,仅界面,代码就有上千行。等到写功能时,人已经崩溃了!
realbay 2014-11-07
  • 打赏
  • 举报
回复
这种情况我一般是把TImage当按钮用,缺点是没有点击、焦点的效果。 不知道有没有合适的第三方组件?
hyz_cs 2014-11-06
  • 打赏
  • 举报
回复
动态创建一个Bitmap,再赋值给按钮.
ccrun.com 2014-11-06
  • 打赏
  • 举报
回复
高版本的C++Builder中,TButton也支持ImageList了。
QIUSQJF 2014-11-06
  • 打赏
  • 举报
回复
speedbutton、toolbutton都可以内嵌图片
rickys2080 2014-11-06
  • 打赏
  • 举报
回复
有,但我记不得名字了,以前用过
realbay 2014-11-06
  • 打赏
  • 举报
回复
移动开发中去掉了最好用的ImageList,不知道伊伯龙是怎么想的
宝龙哥 2014-11-06
  • 打赏
  • 举报
回复
标准Windows工程中的控件大多来自微软的控件库,伊伯龙只是封装了其接口,都是微软设计的样式,移动开发部分大多是三方库或伊伯龙自己开发的控件样式,有很多不完善的地方,不人性化的地方就更多了 比如移动开发中的StringGrid就十分的怪异,不知道是什么样的脑袋瓜子才能弄出这样垃圾的东东
宝龙哥 2014-11-06
  • 打赏
  • 举报
回复
了解了,楼主说的是移动开发
宝龙哥 2014-11-06
  • 打赏
  • 举报
回复
楼主的代码是BCB自带的Button控件?Button控件没有Canvas的吧?
linmutou 2014-11-06
  • 打赏
  • 举报
回复
好什么,我说的是XE6/XE7,在这两个系列之下,根本就没有ImageList这个控件,speedbutton、toolbutton也没可以内嵌图片的属性(如果有,麻烦说明一下,反正我是搞了半天,也搞不出来!)。 还有下面的那个代码和图片,是什么原因。按代码运行的结果,不应该出现图片的结果。
rickys2080 2014-11-06
  • 打赏
  • 举报
回复
楼上两位说的好

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧