Графическая сеть и текст - PullRequest
0 голосов
/ 28 апреля 2010

Моя задача - создать элемент управления, который ведет себя как RichTextBox, но содержит графическую сеть. Единственная задача, которую решает эта сеть, - быть видимой.

Должно быть решение в переопределении метода OnPaint, но это не так.

Этот код:

protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
    base.OnPaint(e);
    ...//drawing a line
}

дает мне RichTextBox без текста

Этот код:

protected override void WndProc(ref System.Windows.Forms.Message m)
{
    base.WndProc(ref m);
        if (m.Msg == 15)
        {
            Graphics g = this.CreateGraphics();
            g.DrawLine(new Pen(Color.White, 1), new Point(0, 0), new Point(400, 400));
        }
}

иногда рисует дополнительные линии

На самом деле, поскольку эти два способа не работают, я не знаю, что попробовать. Жду ваших советов:)

BR Дмитрий

P.S. Я много слышал о больших возможностях WPF, но я не очень знаком с этой технологией и не знаю, с чего начать.

P.P.S. Извините за мой английский, это не мой естественный язык.

1 Ответ

1 голос
/ 28 апреля 2010

Если под сеткой вы подразумеваете какие-то линии сетки, посмотрите на следующее, чтобы начать:

<RichTextBox>
    <RichTextBox.Document>
        <FlowDocument>
            <Paragraph Foreground="Red">
                <Run>Sample Text...</Run>
            </Paragraph>
        </FlowDocument>
    </RichTextBox.Document>
    <RichTextBox.Background>
        <VisualBrush TileMode="Tile" Viewport="0,0,20,20" ViewportUnits="Absolute" Viewbox="0,0,20,20" ViewboxUnits="Absolute">
            <VisualBrush.Visual>
                <Rectangle Stroke="LightGray" StrokeThickness="1" Fill="Transparent" Width="100" Height="100" />
            </VisualBrush.Visual>
        </VisualBrush>
    </RichTextBox.Background>
</RichTextBox>
...