Silverlight <line>是否需要定义Width和Height?</line>

时间:2009-10-02 21:05:39

标签: silverlight-3.0 drawing

除非指定高度和宽度,否则似乎不可见。这是真的吗?

这似乎相当乏味。线条的界限是否意味着正确的宽度和高度?

    <Canvas Height="200" Width="200" HorizontalAlignment="Left" Background="Beige">
        <!-- This is visible -->
        <Line X1="20" Y1="40" X2="70" Y2="90"
              Stroke="Black" StrokeThickness="4" Height="100" Width="100" />

        <!-- This is not visible -->
        <Line X1="10" Y1="10" X2="50" Y2="50"
              Stroke="Black" StrokeThickness="4"/>
    </Canvas>

(我正在使用Silverlight 3。)

4 个答案:

答案 0 :(得分:1)

在SL 4中,MS显示mixing X1, X2, Y1, Y2 with Canvas.Left

的示例

根据我自己的经验,使用Visual Studio 2010,为了在设计器视图中看到行,我必须设置非零宽度和高度,同时还使用X,Y来设置该空间内的行。

答案 1 :(得分:0)

不,您可以使用其中一个模板来定义坐标:

  1. X1,X2,Y1,Y2
  2. Canvas.Left,Canvas.Top,Width,Height。
  3. 如果您一起使用它们,CLR有时可能会显示您的控件错误。

答案 2 :(得分:0)

似乎该线在相对于Line元素的Canvas.Left,Canvas.Top的点(X1,Y1)处绘制。因此,不指定Canvas.Left,Canvas.Top意味着该行实际上是在点(X1,Y1)处绘制的。

它就像控件尺寸(或线的绘图表面)由Canvas.Left,Canvas.Top,Width,Height决定,实际线由(X1,Y1)和(X2,Y2)渲染相对于Canvas.Left,Canvas.Top。

RotateTransform使用Canvas.Left,Canvas.Top值(除非指定了另一个Center),而不是X1等值。因此,如果这些值不同,那么该行上的任何变换都可能无法正常工作。

答案 3 :(得分:0)

我有silverlight 4,我解决了指定画布宽度,画布高度,x1,x2,y1,y2的问题。