diff --git a/VfoOverlay.pas b/VfoOverlay.pas index b1f937d..804a649 100644 --- a/VfoOverlay.pas +++ b/VfoOverlay.pas @@ -1236,7 +1236,7 @@ procedure TVfoOverlay.DrawSelf(C: TCanvas; W, H: Integer); var FreqStr, SStr, BWStr, DMRStr, TxStr, PStr: string; CurY, X, RW, i, DMRX, DMRRight, TxRight, TxW: Integer; - ProfLeft, ProfRight, ProfW: Integer; + ProfLeft, ProfRight, ProfW, TxtY, TriY: Integer; R: TRect; Tri3: array[0..2] of TPoint; BarL, BarW, MeterX: Integer; @@ -1347,14 +1347,19 @@ begin C.Brush.Style := bsClear; while (Length(PStr) > 1) and (C.TextWidth(PStr) > ProfW - 14) do SetLength(PStr, Length(PStr) - 1); - C.TextOut(R.Left + 4, R.Top + (HDR_BADGE_H - C.TextHeight('A')) div 2, PStr); + TxtY := R.Top + (HDR_BADGE_H - C.TextHeight('A')) div 2; + C.TextOut(R.Left + 4, TxtY, PStr); // Треугольник «список» справа — рисуем, а не пишем: в Courier New - // юникодных стрелок может не оказаться. + // юникодных стрелок может не оказаться. Центрируем не по прямоугольнику + // текста, а по САМИМ буквам: TextHeight включает выносные элементы, а в + // подписи одни заглавные, они сидят в верхней части бокса — иначе + // треугольник визуально проваливается ниже надписи. + TriY := TxtY + C.TextHeight('A') div 2 - 2; C.Brush.Color := C.Font.Color; C.Brush.Style := bsSolid; C.Pen.Color := C.Font.Color; - Tri3[0] := Point(R.Right - 9, CurY + 5); - Tri3[1] := Point(R.Right - 3, CurY + 5); - Tri3[2] := Point(R.Right - 6, CurY + 9); + Tri3[0] := Point(R.Right - 9, TriY - 2); + Tri3[1] := Point(R.Right - 3, TriY - 2); + Tri3[2] := Point(R.Right - 6, TriY + 2); C.Polygon(Tri3); C.Font.Size := 8; RegisterHit(R, HIT_TXPROF);