Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用方向、中心对齐和换行字(VCL C+;+;)绘制文本?_C++_Canvas_Vcl_Drawtext - Fatal编程技术网

C++ 如何使用方向、中心对齐和换行字(VCL C+;+;)绘制文本?

C++ 如何使用方向、中心对齐和换行字(VCL C+;+;)绘制文本?,c++,canvas,vcl,drawtext,C++,Canvas,Vcl,Drawtext,我试图在画框画布上绘制一个文本,方向=900,居中对齐,并在画布矩形中对文本进行文字换行。文本应如下图所示 我使用的是AcjCabrReXe5C++,我尝试了下面的例子,但是它不起作用。 void __fastcall TForm1::PBoxPaint(TObject *Sender) { TRect R , DrawRect ; unsigned int DrawFlags = 0; TDrawTextParams DrawParams ;

我试图在画框画布上绘制一个文本,方向=900,居中对齐,并在画布矩形中对文本进行文字换行。文本应如下图所示

我使用的是AcjCabrReXe5C++,我尝试了下面的例子,但是它不起作用。

void __fastcall TForm1::PBoxPaint(TObject *Sender)
{
   TRect R , DrawRect ; 
   unsigned int    DrawFlags = 0;
   TDrawTextParams DrawParams ;        
            
   PBox->Font->Orientation = 900 ;
   PBox->Canvas->Rectangle(PBox->ClientRect) ;
   String S = L"Angualar Text" ;
          R = PBox->ClientRect ;
   InflateRect(R,-2,-2) ;
   DrawRect = R ;

   DrawFlags = DT_END_ELLIPSIS | DT_NOPREFIX | DT_WORDBREAK | DT_EDITCONTROL | DT_CENTER ;
   
   DrawText(PBox->Canvas->Handle, S.c_str() , -1 , &DrawRect, DrawFlags | DT_CALCRECT) ;
   DrawRect.Right = R.Right;

   if (DrawRect.Bottom < R.Bottom)
   {
      OffsetRect( DrawRect, 0, ( R.Bottom - DrawRect.Bottom ) / 2 );
   }
   else
   {
      DrawRect.Bottom = R.Bottom;
   }

   DrawParams.iTabLength    = 0 ;
   DrawParams.iLeftMargin   = 0 ;
   DrawParams.iRightMargin  = 0 ;
   DrawParams.uiLengthDrawn = 0 ; 
   DrawParams.cbSize        = sizeof(DrawParams) ;

   DrawTextEx(PBox->Canvas->Handle,S.c_str(),-1,&DrawRect,DrawFlags,&DrawParams) ;
 }
 
void\uu fastcall TForm1::pbopaint(TObject*Sender)
{
TRect R,DrawRect;
无符号整数DrawFlags=0;
TDrawTextParams-DrawParams;
PBox->Font->Orientation=900;
PBox->Canvas->矩形(PBox->ClientRect);
字符串S=L“角度文本”;
R=PBox->ClientRect;
充气式(R,-2,-2);
DrawRect=R;
DrawFlags=DT|u END|u省略号| DT|u NOPREFIX | DT|u断字| DT|u编辑控制| DT|u中心;
DrawText(PBox->Canvas->Handle,S.c_str(),-1,&DrawRect,DrawFlags | DT_CALCRECT);
DrawRect.Right=R.Right;
if(DrawRect.BottomCanvas->Handle、S.c_str()、-1、&DrawRect、DrawFlags和DrawParams);
}
谁能帮我在画布上画一个文本(如上图)吗?
非常感谢。

所有Win32函数都会返回一个错误标志(实际错误代码可从
GetLastError()
获得)。我看不出你在检查它们中的任何一个。@KhouriGiordano:并非所有Win32函数都检查。特别是,GDI函数,如OP正在使用的函数,不会通过
GetLastError()
报告错误。除非函数的文档明确说明使用了
GetLastError()
,否则不能假定它是。