领悟旧事

Learned Helplessness
分类新闻>>技术文章>>
在xe6/xe7中的fmx下,画一个立体方块并输出文字(移动开发)
来源:http://www.xx0594.com/
时间:2014-12-30
作者:  浏览人数:1525
在xe6/xe7中的fmx下,画一个立体方块并输出文字。
//---------------------------------------------------------------------------
画立体方块
    主要技术有:画透明四边形,设置输出文字的大小和颜色。
//画3D立体按纽,大小为Rect(x,y,x+step_x,y+step_y),FaceColor为指定按纽颜色
//bFlag=true时,为突起,为false时,为凹下,默认为突起。
void __fastcall TForm3D1::Draw3D(TImage *T,TRectF pr,TAlphaColor FaceColor,bool bTu,UnicodeString sText)
{
 T->Bitmap->SetSize(pr.Right ,pr.Bottom  );
 T->Bitmap->Canvas->BeginScene();
 T->Bitmap->Clear(0);//清除,不要透明度会不断叠加,最后变成不会透明了。
 T->Bitmap->Canvas->Fill->Color = FaceColor;//设置颜色。
 T->Bitmap->Canvas->FillRect(TRectF(pr.left +3,pr.top +3,pr.right -3,pr.bottom -3),0, 0, AllCorners,0.7);
 //下面画四周边线,以形成立体效果。
 T->Bitmap->Canvas->StrokeThickness = 2;
 if(bTu) T->Bitmap->Canvas->Stroke->Color = TAlphaColor(claWhite);//突起
 else  T->Bitmap->Canvas->Stroke->Color = TAlphaColor(claGray);
 T->Bitmap->Canvas->DrawLine(TPointF(pr.left +2,pr.top +2),TPointF(pr.right -2,pr.top +2),100);//画上横线
 T->Bitmap->Canvas->DrawLine(TPointF(pr.Left +2,pr.top +1),TPointF(pr.Left +2,pr.bottom  -2),100);//画左边竖线
 if(bTu) T->Bitmap->Canvas->Stroke->Color = TAlphaColor(claGray);//凹下
 else  T->Bitmap->Canvas->Stroke->Color = TAlphaColor(claWhite);
 T->Bitmap->Canvas->DrawLine(TPointF(pr.right-2,pr.top +2),TPointF(pr.right -2,pr.bottom -2),100);//画右竖线
 T->Bitmap->Canvas->DrawLine(TPointF(pr.left +2,pr.bottom -2),TPointF(pr.right -2,pr.bottom -2),100);
 T->Bitmap->Canvas->Fill->Color = claWhite;//设置字体颜色。
 T->Bitmap->Canvas->Font->Size = 22;//设置字体大小。
 T->Bitmap->Canvas->FillText(pr, sText, false, 100,TFillTextFlags() << TFillTextFlag::RightToLeft,TTextAlign::Center,TTextAlign::Center);//在方框内输出文字。
 T->Bitmap->Canvas->EndScene();

}
//---------------------------------------------------------------------------

关闭窗口
 访问量:508168
任何第三方若要引用、转摘本站信息,均需征得本站书面同意,否则视为侵权。本站信息为个人观点,若因引用本站信息而产生的任何情况,均与本站无关。Email:linmutou@163.com
闽ICP备14017840号-2