我正在使用DrawTextEx将字符串绘制到TCanvas中,但是,当我设置DT_RIGHT标志并且大多数字符为“1”且字体不是固定宽度时,(即:“551111,111”带有“ Arial“font”字符串的起始位置计算错误,似乎在最后一个字符上被截断(详见图片)。
在代码段下方:
var
dtPar: TDrawTextParams;
C: TCanvas;
R: TRect;
Align: Integer;
...
dtPar.cbSize := SizeOf(dtPar);
dtPar.iTabLength := 0;
dtPar.iLeftMargin := 0;
dtPar.iRightMargin := 0;
dtPar.uiLengthDrawn := 0;
Align := DT_NOPREFIX or DT_EDITCONTROL or DT_EXPANDTABS or DT_RIGHT or DT_WORDBREAK;
DrawTextEx(C.Handle, PChar(FTextToDisplay), -1, R, Align, @dtPar)
我尝试了几个Windows版本,我发现这种情况发生在Vista或更高版本上。它不会发生在XP上。
我正在使用Delphi XE 3构建。
答案 0 :(得分:1)
问题是您传递给AVCaptureConnection videoConnection = null;
foreach(AVCaptureConnection connection in _videoOutput.Connections)
{
foreach ( AVCaptureInputPort port in connection.InputPorts)
{
if (port.MediaType == AVMediaType.Video)
{
videoConnection = connection;
break;
}
}
}
if (videoConnection != null) {
if (videoConnection.SupportsVideoOrientation) {
videoConnection.VideoOrientation = AVCaptureVideoOrientation.LandscapeRight;
}
}
的矩形超出了画布的右边缘。
答案 1 :(得分:0)
您可以拨打两次DrawTextEx
第一次dwDTFormat = DT_CALCRECT
获取TRect
输入输出参数中lprc
结构的值;第二次你可以像你已经做的那样打电话,但是传递第一次通话获得的TRect
的修改
从第一次调用中获取宽度,然后在第二次调用DrawTextEx