2012-12-05 35 views
4

水平或垂直WPF線限制爲125,000像素?看下面的代碼,綠線顯示正確,但紅色的一根根本不顯示,儘管長度只有0.01。任何想法爲什麼?水平或垂直WPF線限制爲125,000像素?

<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> 

安德魯

回答

3

這似乎是WPF處理矢量圖形的限制。

爲了使問題更加複雜,嘗試改變StrokeThickness - 如果你設置你的紅線StrokeThickness12,它再次顯示...直到你增加超過25萬長度。然後再次消失。

<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> 

你可以找到關於連接寫上去的bug:Disappearing Path (WPF)

+0

菲利普,我爲了解決這個WPF錯誤,使得線條略微偏離水平線。奇怪的是,它似乎沒有記錄在任何地方(除了連接錯誤)。 –

0

這無疑吸引過去的15萬個像素,這是一個有點奇怪的是,線路沒有在這種情況下看到的,因爲例如,如果你這樣做

<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的值,會導致明顯的閃爍。

+0

這樣看來,厚度爲1的絕對水平或垂直線限制爲125000像素。兩倍厚的線可以是兩倍長。您可以通過確保線不完全水平或垂直來解決問題。它必須是WPF中的錯誤或無證限制。 –