私はASCIIアートに現在の画像を変換しPaint.net
ためのプラグインに取り組んでいます。私は変換が正常に動作しており、ASCIIアートを固定幅フォントのTextBox
コントロールに出力します。私の問題は、TextBoxの行間隔のためにASCIIアートが縦に伸びていることです。 TextBox
の行間隔を設定する方法はありますか?C#のTextBox行間隔
2
A
答えて
3
TextBoxは書式設定オプションのない単一行または複数行のテキストを表示するだけです。フォントは使用できますが、テキストボックスではなくTextBoxに適用されるため、行間隔などの段落設定はわかっています。
私の最初の提案は、リッチテキストボックスを使用することですが、その後、再び、RTFはので、私はそれは同様に不可能であろうと信じて行間隔のためのコードを持っていません。
だから私の最後の提案はオーナー描画コントロールを使用することです。これは、固定幅フォントで、あまりにも難しいことではありません - あなたは、各文字の位置がx
とy
は文字インデックスとw
とh
ある(x*w, y*h)
は、1つの文字の大きさであることを知っています。
編集:もう少し考えれば、文字列を線で区切り、各行を描画するだけで簡単です。
これだけの簡単なコントロールがあります。テストしたところ、Font = new Font(FontFamily.GenericMonospace, 10, FontStyle.Regular)
の場合、Spacing
の値はでした。
/// <summary>
/// Displays text allowing you to control the line spacing
/// </summary>
public class SpacedLabel : Control {
private string[] parts;
protected override void OnPaint(PaintEventArgs e) {
Graphics g = e.Graphics;
g.Clear(BackColor);
float lineHeight = g.MeasureString("X", Font).Height;
lineHeight += Spacing;
using (Brush brush = new SolidBrush(ForeColor)) {
for (int i = 0; i < parts.Length; i++) {
g.DrawString(parts[i], Font, brush, 0, i * lineHeight);
}
}
}
public override string Text {
get {
return base.Text;
}
set {
base.Text = value;
parts = (value ?? "").Replace("\r", "").Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
}
}
/// <summary>
/// Controls the change in spacing between lines.
/// </summary>
public float Spacing { get; set; }
}
関連する問題
- 1. 目的Cラベル行間隔?
- 2. qplaintextedit行間隔
- 3. TextBoxコントロールの文字間隔/幅の変更
- 4. NovaCode DocX - 行間隔
- 5. 各行のヘッダーの間隔
- 6. C#時間間隔でメソッドを実行する
- 7. ラベル内の行間隔+ vb.net
- 8. BI Publisherの行間隔
- 9. QTreeWidgetの垂直行間隔
- 10. ウェブページ全体の行間隔
- 11. 間隔が客観C
- 12. インラインの行間のEmacs間隔のコメント
- 13. matlabの間隔間隔
- 14. HTMLテーブルの行間の間隔
- 15. ヘッダータグ間の行間隔の定義
- 16. スカラ実間隔、Int間隔
- 17. 特定の時間間隔の後にコードを実行すると、C#.NET
- 18. クリーンアップ間隔 - C++/Visual Studioの2010
- 19. C# - C++ Intellisense textbox
- 20. C++で一定の時間間隔でメソッドを実行するWindowsサービス
- 21. 特定の時間間隔でCプログラムを実行するPythonスクリプト
- 22. Cプログラミングイベント間の時間間隔を見つける方法
- 23. DelphiでのGDI行の間隔は?
- 24. 個々のフォントの行間隔
- 25. カスタムフォントでの行間隔の問題
- 26. インラインブロック間の間隔
- 27. ナビゲーションリンク間の間隔
- 28. 時間間隔
- 29. iOS NSMutableAttributedStringの行間隔属性
- 30. 15分間隔のスパーク実行バッチジョブ
おそらく、リッチテキストボックスを使用して、行の高さ設定:http://social.msdn.microsoft.com/forums/en-US/vblanguage/thread/8781caf6-5759-4fee-8c08-cd8a2d85fc9fを? –