6

水平または垂直の WPF ラインは 125,000 ピクセルに制限されていますか? 次のコードを見ると、緑の線は正しく表示されていますが、赤の線は 0.01 だけ長いにもかかわらずまったく表示されていません。理由はありますか?

<Window x:Class="DCView.Window11"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window11" Height="300" Width="300">
    <ScrollViewer>
        <Grid Width="150000">
            <Line X1="0" X2="125000.00" Y1="10" Y2="10" StrokeThickness="1" Stroke="Green"></Line>
            <Line X1="0" X2="125000.01" Y1="20" Y2="20" StrokeThickness="1" Stroke="Red"></Line>
        </Grid>     
    </ScrollViewer>
</Window>

アンドリュー

4

2 に答える 2

5

これは、WPF のベクター グラフィックスの処理における制限のようです。

もっと複雑にするには、赤い線の を からにStrokeThickness設定すると、再び表示されます...長さが 250000 を超えるまで..その後、再び消えます。 StrokeThickness12

<Grid>
    <Line X1="0" X2="125000.00" Y1="10" Y2="10" StrokeThickness="1" Stroke="Green"></Line>
    <Line X1="0" X2="250000.00" Y1="20" Y2="20" StrokeThickness="2" Stroke="Red"></Line>
    <Line X1="0" X2="250000.01" Y1="30" Y2="30" StrokeThickness="2" Stroke="Blue"></Line>
</Grid>  

ストロークの太さを増やすと、最大長が長くなります。

また、線が完全に水平または垂直でない場合、長さの制限がなくなるように見えることに注意してください。

<Grid>
    <Line X1="0" X2="125000.00" Y1="10" Y2="10" StrokeThickness="1" Stroke="Green" />
    <Line X1="0" X2="125000.01" Y1="20" Y2="20.0001" StrokeThickness="1" Stroke="Red" />
</Grid>

connect に書かれているバグを見つけることができます: Disappearing Path (WPF)

于 2012-12-05T20:30:50.840 に答える
0

それは間違いなく 150,000 ピクセルを超えて描画します。この場合、線が表示されないのは少し奇妙です。たとえば、これを行うと

<Line X1="0" X2="125000.01" Y1="20" Y2="20" StrokeThickness="2" Stroke="Red"></Line>

またはこれ

<Line X1="0" X2="125000.01" Y1="21" Y2="20" StrokeThickness="1" Stroke="Red"></Line>

すべて正常に動作します。理由についてはおそらくどこかに答えがありますが、X2 の値をアニメートしている場合、これにより重大なちらつきが発生する可能性があるため、適切な検索を行ってください。

于 2012-12-05T20:27:44.993 に答える