文字列の一部の色を変えてTextOutするには?

解決


まさ  2010-01-27 23:40:31  No: 37299

C++Builder5を使っています。
TRichEditで行の一部の色を変えてその文字列をCanvas->TextOutしたいのですが
良い方法がみつかりません。
例えば、
"あいうえおかきくえこ"
という文字列があった時に基本色は白ですが、"かきく"だけを赤にして
Canvasに"あいうえおかきくえこ"という文字列を描画したいのですが・・・
簡単で良い方法があったら教えてください。。


manbon  2010-01-28 00:00:51  No: 37300

文字を書いた後でしたら、範囲選択して、ボタンクリック
のような感じですかね?

    { Private 宣言 }
    function CurrText: TTextAttributes;

function TForm1.CurrText: TTextAttributes;
begin
  if RichEdit1.SelLength > 0 then Result := RichEdit1.SelAttributes
                             else Result := RichEdit1.DefAttributes;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  CurrText.Color := clRed;
end;


まさ  2010-01-28 00:21:17  No: 37301

manbon さんお答えありがとうございます。
僕の説明が悪かったのですが、
RichEditの一部の文字の色の変更はすでにされていて
それをCanvas->TextOutで描画したいのですが。。。

とりあえず思いつく方法としては
まず、色を白にして
Canvas->Text( 0,0,"あいうえおかきくえこ" );
そして、色を赤にして
Canvas->Text( ??,0,"かきく" );
この??の座標が・・・


そういうことなら  2010-01-28 00:40:47  No: 37302

Canvas.TextOut(0, 0, 'あいうえおかきくけこ');
  Canvas.Font.Color := clRed;
  Canvas.TextOut(Canvas.TextWidth('あいうえお'), 0, 'かきく');


まさ  2010-01-28 01:44:45  No: 37303

TextWidthでX位置を取得するんですね。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加