C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: スクロール有無の検出


(過去ログ 59 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■34144 / inTopicNo.1)  スクロール有無の検出
  
□投稿者/ けん (1回)-(2009/03/19(Thu) 19:58:12)

分類:[.NET 全般] 

はじめまして。

現在、自前でスクロールボタンを用意し、
ページ切り替えが可能な、文字表示コントロールを作成しています。


見た目は普通の複数行表示のLabelですが、
どんなに文字が長くてもスクロールバーは表示しないで、
ページ切り替えはボタンで行う、というものです。


この場合、TextRenderer::MeasureTextあたりを使って、
描画したサイズが対象エリアを「オーバーしている・していない」
の計算はできると思ったのですが、
「どこまで文字を切ったら丁度収まるか?」というのは、
.Netでサポートされているのでしょうか?


イメージとしては、
「Font名・Fontサイズ・描画予定のSize・描画する予定の文字」を渡すと、
描画予定のSizeにおさまるまでの文字列を返してくれるようなものです。


どなたかご存じの方、お願いします。

引用返信 編集キー/
■34166 / inTopicNo.2)  Re[1]: スクロール有無の検出
□投稿者/ たくボン (152回)-(2009/03/21(Sat) 00:51:49)
No34144 (けん さん) に返信
> この場合、TextRenderer::MeasureTextあたりを使って、
> 描画したサイズが対象エリアを「オーバーしている・していない」
> の計算はできると思ったのですが、
> 「どこまで文字を切ったら丁度収まるか?」というのは、
> .Netでサポートされているのでしょうか?

うーん、俺も最近の描画APIは詳しくないからわからんけど、一度に指定された矩形に収まる文字列を判定するようなAPIは無かったと思う。(多分.NETも?)

どのようなコントロールを作るかにもよるけど、リッチテキストみたいな複数のフォントをサポートするコントロールなら1文字ずつスケールを加算、単一のフォントを使用するならMeasureTextとかを使って2分木で文字数を求めるのがいいのかな。

前にCOBOLで作られてる帳票を.NETで印字するライブラリ(指定した矩形に文字列を印字する関数とか)を作ったけど、その時は複数フォントとか等幅揃えをサポートしたから1文字ずつスケールの計算したかな。
ただしTure-FontでMeasureTextを使うときは、ABCサイズを考慮する必要があるからちょっと工夫がいるかも:-)

古臭い人間だからあんまり参考にならないかもしれないけど、良かったら参考までに。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -