初学FMX,用C++ Builder改写的FMX炫酷界面及仿QQ登陆界面Demo

wxfame 2015-09-15 09:35:08
加精
用C++ Builder改写的FMX炫酷界面及仿QQ登陆界面Demo(CBXE8源码)
以前用过BCB6,现在新学开发工具C++ Bulder XE8,发现FireMonkey比较有特色,不过网上CB资料太少,找到几个不错的delphi写的FMX界面的Demo,学习改成了CB的,分享此源码给CB新手参考(高手就不用看啦,不过也欢迎指教)
希望大家多多分享,壮大CB开发的队伍。

Delphi和C++ Builder在FMX里的写法有些不同,整理如下部分代码,以作对比参考:

Delphi
TButton(Sender).Enabled := false;
SwitchTo3D;
if Assigned(FContainer) then
begin
TAnimator.AnimateFloat(FContainer, 'Position.Z', 300, 0.2);
TAnimator.AnimateFloatDelay(FContainer, 'Position.Z', 0, 0.2, 1);
TAnimator.AnimateFloatWait(FContainer, 'RotationAngle.Y', 360, 1.5, TAnimationType.&In, TInterpolationType.Linear);
end;
SwitchTo2D;
TButton(Sender).Enabled := true;


C++ Builder
((TButton *)Sender)->Enabled = false;
SwitchTo3D();
if(FContainer!=NULL)
{
TAnimator::AnimateFloat(FContainer, "Position.Z", 300, 0.2);
TAnimator::AnimateFloatDelay(FContainer, "Position.Z", 0, 0.2, 1);
TAnimator::AnimateFloatWait(FContainer, "RotationAngle.Y", 360, 1.5, TAnimationType::InOut , TInterpolationType::Linear);
}
SwitchTo2D();
((TButton *)Sender)->Enabled = true;


Delphi
FViewport := TViewport3D.Create(Self);
FViewport.Parent := Self;
FViewport.Align := TAlignLayout.Client;
FViewport.Color := claNull;
FContainer := TLayer3D.Create(Self);
FContainer.Parent := FViewport;
FContainer.Projection := TProjection.Screen;
FContainer.Transparency := true;
FContainer.Align := TAlignLayout.Client;
LImg := TImage.Create(Self);
//LImg.Align := TAlignLayout.Client;
LImg.Position.X := rcmain.Position.X;
LImg.Position.Y := rcmain.Position.Y;
LImg.Width := rcmain.Width;
LImg.Height := rcmain.Height;
LImg.Bitmap.Assign(rcmain.MakeScreenshot);
LImg.Margins := rcmain.Margins;
LImg.Parent := FContainer;
rcmain.Visible := False;


C++ Builder
FViewport = new TViewport3D(this);
FViewport->Align = TAlignLayout::Client;
FViewport->Color = TAlphaColorRec::Null;
FViewport->Parent = this;
FContainer = new TLayer3D(this);
FContainer->Parent = FViewport;
FContainer->Projection = TProjection::Screen;
FContainer->Transparency = true;
FContainer->Align = TAlignLayout::Client;
LImg = new TImage(this);
// LImg->Align = TAlignLayout::Client;
LImg->Position->X = rcmain->Position->X;
LImg->Position->Y = rcmain->Position->Y;
LImg->Width = rcmain->Width;
LImg->Height = rcmain->Height;
LImg->Bitmap->Assign(rcmain->MakeScreenshot());
LImg->Margins = rcmain->Margins;
LImg->Parent = FContainer;
rcmain->Visible = false;


Delphi
FreeAndNil(LImg);
FreeAndNil(FContainer);
FreeAndNil(FViewport);


C++ Builder
delete LImg;
delete FContainer;
delete FViewport;




...全文
4181 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongluxyg 2017-04-22
  • 打赏
  • 举报
回复
看看学习一下
qq_25083283 2016-10-20
  • 打赏
  • 举报
回复
我在学习c++ 用的是CB2010 版本是 xe?
梦想起航2017 2016-06-08
  • 打赏
  • 举报
回复
学习学习,可为啥我下载不了呢
qq_33800727 2016-01-26
  • 打赏
  • 举报
回复
很不错。。。。
haiandj 2016-01-01
  • 打赏
  • 举报
回复
引用 8 楼 ccrun 的回复:
[quote=引用 6 楼 wx384479289 的回复:] 感谢ksrsoft和妖哥,以前在别的帖子中也见网友发过EMB官方c++builder例子的连接,不过当时没太在意,最近刚接触XE8,还在学习安装文件里自带的Samples,今天又看到ksrsoft发的官方例子连接,立马打开收藏了网页,好多CB的例子啊,可以好好学习一番了,谢谢提醒。
ksrsoft是个很热心的网友。[/quote] 妖哥,是不是cb从哪个版本开始也要.net了?我还停留在6.0,玩了一段时间C#,感觉安德斯确实牛逼,但是.net执行效率太低太卡了,不喜欢这种半解释执行的东西
qq_28629829 2015-12-04
  • 打赏
  • 举报
回复
感谢楼主的分享。谢谢
yuntang5 2015-09-26
  • 打赏
  • 举报
回复
来看看的啊。。。。。。。。。。。
xiaoyubaozi 2015-09-22
  • 打赏
  • 举报
回复
长知识了。。
天为峰 2015-09-22
  • 打赏
  • 举报
回复
好人,支持一下
cattpon 2015-09-19
  • 打赏
  • 举报
回复
效果挺不错的。
okok463 2015-09-19
  • 打赏
  • 举报
回复
suzhangkang8 2015-09-17
  • 打赏
  • 举报
回复
来支持呢。。。
菜菜汪 2015-09-17
  • 打赏
  • 举报
回复
牛啊
mybusa 2015-09-17
  • 打赏
  • 举报
回复
唯美
qq_31367945 2015-09-16
  • 打赏
  • 举报
回复
先看看,然后挣积分了
qq_31343629 2015-09-16
  • 打赏
  • 举报
回复
好贴,火前留名
xiaoxiangqing 2015-09-16
  • 打赏
  • 举报
回复
很期待用新版本,现在还一直在用bcb6
yadan_tanchfeng 2015-09-16
  • 打赏
  • 举报
回复
宝龙哥 2015-09-16
  • 打赏
  • 举报
回复
楼主是高手
shaisandiu 2015-09-16
  • 打赏
  • 举报
回复
不错的啊。。。。
加载更多回复(14)

13,825

社区成员

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

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