DOBON.NETプログラミング掲示板過去ログ
RichTextBoxで背景に線や背景色
題名: RichTextBoxで背景に線や背景色
著者: Hiro
日時: 2011/09/14 14:45:04
ID: 29044
この記事の返信元:
(なし)
この記事への返信:
[29088]
Re[1]: RichTextBoxで背景に線や背景色
jiji
2011/09/22 12:10:14
ツリーを表示
環境/言語:[Windows Vista/7 C# VC2010 Winアプリ]
分類:[.NET]
お世話になります。
RichTextBoxに背景で線、文字、背景色を表示させたく調べています。
public class myRichTextBox : System.Windows.Forms.RichTextBox
{
myRichTextBox()
{
this.SetStyle(ControlStyles.UserPaint, true);
}
:
:
protected override void OnPaint(PaintEventArgs e)
{
Point[] ps = { new Point(0, 0), new Point(350, 250), new Point(480, 400), new Point(400, 550) };
e.Graphics.DrawLines(Pens.Black, ps);
Brush brush1 = new SolidBrush(Color.Black);
e.Graphics.DrawString("XXXXXXXXXXXXXXXXXXXXXXXXXX", new Font("MS P明朝", 10), brush1, 20, 120);
base.OnPaint(e);
}
protected override void OnPaintBackground(PaintEventArgs pevent)
{
base.OnPaintBackground(pevent);
// 1ページの長さ(1ページの所見は、14行)
int y = Font.Height * 14;
Rectangle rect = new Rectangle(this.ClientRectangle.X, this.ClientRectangle.Y + y, this.ClientRectangle.Width, this.ClientRectangle.Height);
SolidBrush brush = new SolidBrush(Color.LightPink);
//Graphics g = syntaxRichTextBox2.CreateGraphics();
pevent.Graphics.FillRectangle(brush, rect);
}
と、派生クラスに書いてやれば表示などなどしてくれますが、問題が発生しました。
1.タイプした文字が表示されず空白で表示のままカレットが移動する。
−>文字を通常の様に表示させたい。
2.背景に書いてあるはずの線や、背景色が、改行すると下にずれる。
−>文字入力に影響されずに表示したい
よろしくお願いします。
題名: Re[1]: RichTextBoxで背景に線や背景色
著者: jiji
日時: 2011/09/22 12:10:14
ID: 29088
この記事の返信元:
[29044]
RichTextBoxで背景に線や背景色
Hiro
2011/09/14 14:45:04
この記事への返信:
(なし)
ツリーを表示
グラフィカルな表現力を求めるならWPFが便利です。
WPFのコントロールどうしはバックグラウンドの透過に対応していますので、背景描画用コントロールの上にRichTextBoxを重ねることも可能です。
<参考>
WindowsフォームでWPFコントロールを利用するには
http://www.atmarkit.co.jp/fdotnet/dotnettips/800wpfonwinform/wpfonwinform.html
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
お世話になります。
RichTextBoxに背景で線、文字、背景色を表示させたく調べています。
public class myRichTextBox : System.Windows.Forms.RichTextBox
{
myRichTextBox()
{
this.SetStyle(ControlStyles.UserPaint, true);
}
:
:
protected override void OnPaint(PaintEventArgs e)
{
Point[] ps = { new Point(0, 0), new Point(350, 250), new Point(480, 400), new Point(400, 550) };
e.Graphics.DrawLines(Pens.Black, ps);
Brush brush1 = new SolidBrush(Color.Black);
e.Graphics.DrawString("XXXXXXXXXXXXXXXXXXXXXXXXXX", new Font("MS P明朝", 10), brush1, 20, 120);
base.OnPaint(e);
}
protected override void OnPaintBackground(PaintEventArgs pevent)
{
base.OnPaintBackground(pevent);
// 1ページの長さ(1ページの所見は、14行)
int y = Font.Height * 14;
Rectangle rect = new Rectangle(this.ClientRectangle.X, this.ClientRectangle.Y + y, this.ClientRectangle.Width, this.ClientRectangle.Height);
SolidBrush brush = new SolidBrush(Color.LightPink);
//Graphics g = syntaxRichTextBox2.CreateGraphics();
pevent.Graphics.FillRectangle(brush, rect);
}
と、派生クラスに書いてやれば表示などなどしてくれますが、問題が発生しました。
1.タイプした文字が表示されず空白で表示のままカレットが移動する。
−>文字を通常の様に表示させたい。
2.背景に書いてあるはずの線や、背景色が、改行すると下にずれる。
−>文字入力に影響されずに表示したい
よろしくお願いします。