时间: 2021-07-31 作者:daque
有很多作品引见怎样在 vc 中输入回旋笔墨,但却很罕见到哪篇作品引见在 bcb 中爆发一致功效的。。及至于很多人觉得在 bcb 中是没辙做到一致功效的,固然那些人就有来由在何处口口声声地说 bcb 怎样怎样的低劣了!这个固然和 bcb 自己那套图形组件的安排是有很大联系的。vcl 图形组件封装了 windows 图形摆设接口(gui),使得在 windows 步调安排中增添图形变得很简单。bcb 的安排简直很特出!它的企图是将 vcl 图形组件 安排成三个档次:最高层:绘制线条和图形,比方:moveto, lineto, rectangle, and ellipse 输入并遏制文本,比方:textout, textheight, textwidth, and textrect 弥补形势,比方:fillrect and floodfill中层: 定制输入的文本和图形,经过遏制以部下性:pen, brush, and font,pixels 复制以及兼并图形,比方:draw, stretchdraw, brushcopy, and copyrect 本领; copymode 属性底层: 径直挪用 windows 的 gdi 因变量,vcl 图形组件中供给了一个 handle 属性,经过它,你能遏制十足!bcb 的用户绝大普遍只会运用高层和中层的少许本领和属性,她们压根不领会再有一个什么 handle 属性!对准那些用户,以及那些对 bcb 有疑义的人,我供给了底下这个例子来证明 bcb 的宏大以及易用性。很大略,几句代码:void __fastcall tform1::formpaint(tobject *sender){ logfont lf; getobject(canvas->font->handle, sizeof (logfont), &lf); lf.lfescapement = 450; //set to 450 to make 45 degree angle lf.lforientation = 450; lf.lfoutprecision = out_tt_only_precis; canvas->font->handle = createfontindirect (&lf); canvas->brush->style = bsclear; canvas->pen->color=clred; canvas->textout (20, 120, "wow!! angled text!");}如何样?是否很大略啊。。。我牢记在 vc 中单设置一个字体变量就要十多个参数呢!底下咱们来大略地领会一下这个例子:第一句:logfont lf;logfont 变量能实足地遏制了字体的属性,在 wingdi.h 中被设置为:typedef logfonta logfont; 而 logfonta 设置为:typedef struct taglogfonta{ long lfheight; long lfwidth; long lfescapement; long lforientation; long lfweight; byte lfitalic; byte lfunderline; byte lfstrikeout; byte lfcharset; byte lfoutprecision; byte lfclipprecision; byte lfquality; byte lfpitchandfamily; char lffacename[lf_facesize];} logfonta;第二句:getobject(canvas->font->handle, //看!用到 handle 属性了吧!这句用来博得画布字体的句柄 sizeof (logfont), //这句博得 logfont 的 size &lf);底下几句经过安排 logfont 的属性来遏制字体lf.lfescapement = 450; //set to 450 to make 45 degree anglelf.lforientation = 450;lf.lfoutprecision = out_tt_only_precis;底下创造了一个新的字体,而且用来树立 canvas->font 的字体canvas->font->handle = createfontindirect (&lf);canvas->brush->style = bsclear; canvas->pen->color=clred;canvas->textout (20, 120, "wow!! angled text!");就这么大略。。。在底层遏制其余的图形也一致于这种本领,大师不仿试试:)