2

400 x 400 のキャンバスを作成します。その中に 200 x 400 の青い長方形を入れます。Canvas.Left = 200 で、同じサイズの別の青い四角形を配置します。これを Viewbox にラップし、ビュー ボックスをスケーリングします。特定の解像度では、長方形が平らであるはずなのに、長方形の間に白い柱が表示されることがあります。

どうすればこれを回避できますか? 私がこれまでに見つけた唯一の方法は、199 のように、キャンバスを右の長方形の左に 200 よりわずかに小さく設定することですが、それでも特定の縮尺でアーティファクトが表示されます。

4

1 に答える 1

0

ViewBox の ScaleTransform が問題を引き起こしています。テキストのピクセル スナップは Silverlight 5 で提供される予定ですが、すべての UI 要素についてはわかりません。

Dave Reyea のPixel Snapperを使用すると、この問題を回避できます。

<UserControl x:Class="SO_Viewbox.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400"
              xmlns:local="clr-namespace:SO_Viewbox">

    <Viewbox>
        <Canvas Width="400" Height="400" Background="Yellow">
            <local:Snapper Snap="TopLeft">
                <Rectangle Width="200" Height="400" Fill="Blue" />
            </local:Snapper>
            <local:Snapper Canvas.Left="200" Snap="TopLeft">
                <Rectangle  Width="200" Height="400" Fill="Blue" />
            </local:Snapper>
        </Canvas>
    </Viewbox>
</UserControl>

また、依存関係プロパティとして実装する方法も示しています。Viewbox を変更して問題を修正できればいいのですが、Viewbox の変換を変更するだけでは解決できないように思われます。代わりに、ピクセル スナッピングを、ビューボックス。

于 2011-04-05T13:34:46.037 に答える