Как нарисовать таблицу с линиями графика в FlowDocument? - PullRequest
1 голос
/ 15 ноября 2011

В моем FlowDocument я хотел бы включить таблицу, заполненную текстом и линиями графика.Какой подход вы бы порекомендовали?Я думал о том, чтобы прикрепить аксессуар к столу, но до сих пор не смог прикрепить аксессуар по всей таблице.

Вот эскиз чего-то, что я хочу добавить в документ:

enter image description here

Я использую C # и .NET 4.0

1 Ответ

2 голосов
/ 25 января 2012

Проблема решена с помощью Grid. Сетка очень похожа на таблицу, и в ней нет проблем с содержанием холста. Здесь вы можете увидеть пример изображения и пример объединения Grid с Canvas в FlowDocument. Вы можете создать тот же самый документ потока через код:

Table with multiple rows, columns and drawing in the cells.

<FlowDocument PageWidth="600" MinPageWidth="600" PagePadding="0,0,0,0">
  <Section>
    <Paragraph>
      <Grid ShowGridLines="False" Background="#FFFFFFFF" Margin="0,5,0,0">
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="140"/>
          <ColumnDefinition Width="460"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
          <RowDefinition Height="20"/>
          <RowDefinition Height="20"/>
        </Grid.RowDefinitions>
        <Canvas Background="#FFFFFFFF" Name="Canvas0" Width="460" Height="40" Grid.Column="1" Grid.Row="1">
          <Rectangle Fill="#FFD3D3D3" Width="140" Height="40" Canvas.Left="160" Canvas.Top="0"/>
          <Rectangle Fill="#FFA9A9A9" Width="91" Height="40" Canvas.Left="188" Canvas.Top="0"/>
          <Ellipse Fill="#FF3E00C1" Width="7" Height="7" Canvas.Left="282.978417266187" Canvas.Top="6.5"/>
          <Ellipse Fill="#FF1D00E2" Width="7" Height="7" Canvas.Left="199.508" Canvas.Top="26.5"/>
          <Line X1="286.478417266187" Y1="10" X2="203.008" Y2="30" StrokeThickness="2">
            <Line.Stroke>
              <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
                <LinearGradientBrush.GradientStops>
                  <GradientStop Color="#FF1D00E2" Offset="0"/>
                  <GradientStop Color="#FF3E00C1" Offset="1"/>
                </LinearGradientBrush.GradientStops>
              </LinearGradientBrush>
            </Line.Stroke>
          </Line>
        </Canvas>
      </Grid>
    </Paragraph>
  </Section>
</FlowDocument>
...