GDI에 Delphi TextRect
의 아날로그가 있습니까? 나는 DrawText, DrawTextEx
을 보았지만 내가 필요한 것을 찾지 못했습니다. 진행률 막대의 텍스트를 두 가지 색상 부분으로 나누어 표시해야합니다 (예 : 텍스트의 왼쪽 부분이 검은 색이고 오른쪽이 흰색입니다. 그래서 일반적으로 모든 진행률 표시 줄에. 귀하의 답변Windows GDI의 Delphi TextRect
감사합니다!
GDI에 Delphi TextRect
의 아날로그가 있습니까? 나는 DrawText, DrawTextEx
을 보았지만 내가 필요한 것을 찾지 못했습니다. 진행률 막대의 텍스트를 두 가지 색상 부분으로 나누어 표시해야합니다 (예 : 텍스트의 왼쪽 부분이 검은 색이고 오른쪽이 흰색입니다. 그래서 일반적으로 모든 진행률 표시 줄에. 귀하의 답변Windows GDI의 Delphi TextRect
감사합니다!
ExtTextOut
기능을 찾고 있습니다.
샘플 :
procedure TForm4.FormPaint(Sender: TObject);
const
S = 'This is a sample text';
begin
ExtTextOut(Canvas.Handle, 10, 10, ETO_CLIPPED,
Rect(40, 10, 100, 100), PChar(S), length(S), nil)
end;
하지만 당신이 정말로 무엇을 원하는, 'NOT-coloured text'을 그릴 수 있다고 생각 :
procedure DrawTextNOT(const hDC: HDC; const Font: TFont; const Text: string; const X, Y: integer);
begin
with TBitmap.Create do
try
Canvas.Font.Assign(Font);
with Canvas.TextExtent(Text) do
SetSize(cx, cy);
Canvas.Brush.Color := clBlack;
Canvas.FillRect(Rect(0, 0, Width, Height));
Canvas.Font.Color := clWhite;
Canvas.TextOut(0, 0, Text);
BitBlt(hDC, X, Y, Width, Height, Canvas.Handle, 0, 0, SRCINVERT);
finally
Free;
end;
end;
procedure TForm4.FormPaint(Sender: TObject);
const
S = 'This is a sample text';
var
ext: TSize;
begin
Canvas.Brush.Color := clBlack;
Canvas.FillRect(Rect(0, 0, Width div 2, Height));
Canvas.Brush.Color := clWhite;
Canvas.FillRect(Rect(Width div 2, 0, Width, Height));
ext := Canvas.TextExtent(S);
DrawTextNOT(Canvas.Handle, Canvas.Font, S, (Width - ext.cx) div 2,
(Height - ext.cy) div 2);
end;
@maxfax : OK, * now * (결코 늦지 않는 것이 더 좋을 때가 있습니다 - 때로는 조금 느립니다.)'TextRect'에서 누락 된 부분을 봅니다. 당신이 찾고있는 WinAPI 함수는'ExtTextOut'입니다. 그래도 어쨌든 하나의 NOT- 컬러 텍스트를 그리는 것이 더 간단하지 않다면 궁금합니다. –
대단히 감사합니다 !!! 정확히 내가 필요로하는 것! – maxfax
GDI에서 사용할 수있는'TextOut' 및 'DrawText' ('DrawTextEx')입니다. 여기에는 Delphi 함수보다 * 더 많은 * 기능이 포함되어 있습니다. 어떤 기능을 정확히 찾고 있습니까? 'TCanvas' 코드는 어떻게 생겼습니까? 왜 당신은'TCanvas'를 포기할 필요가 있다고 느끼십니까? –
하지만 TextRect (텍스트의 일부를 자르고 그릴 수없는 부분)의 주요 아이디어가 필요합니다. 나는 DrawText/Ex에서 그것을 보지 못했다. 게시 된 그림을 보시고 TGauge (또는 다른 진행 막대)와 같은 텍스트를 그려야합니다. – maxfax