小编And*_*rej的帖子

WPF Adorner剪辑

我有ItemsControl一个ScrollViewer.其中的项目ItemsControl扩展为DataTemplate基本上由a 组成的项目Adorner.

现在的问题是,当滚动时,视觉儿童在Adorner外面可见ScrollViewer.让我们说我从水平偏移0滚动到100,Adorner向左移动的视觉子项并且在旁边可见ScrollViewer,尽管它们应该被隐藏.设置ClipToBoundsItemsControlScrollViewer不起作用.

我理解,这Adorner是在z顺序上呈现在所有元素之上,但它们确实不应该在诸如此类的情况下可见ScrollViewer.Element通过这种方式装饰的行为与预期的一样,并且不可见ScrollViewer.

是否有任何简单的方法来"剪辑" Adorners,以便它们仅在可见滚动区域中可见?

谢谢,Andrej

wpf clipping adorner

8
推荐指数
2
解决办法
4699
查看次数

密钥长度是否影响字典性能?

我将在.NET项目中使用Dictionary来存储大量对象.因此,我决定使用GUID字符串作为键,以确保每个对象的唯一键.

GUID(或更大的)之类的大键是否会降低Dictionary的性能,例如通过其键检索对象?

谢谢,Andrej

c# performance dictionary

7
推荐指数
2
解决办法
8039
查看次数

Silverlight动画不流畅

当尝试基于Silverlight设置对象时间/帧的动画时(与使用DoubleAnimation或Storyboard不同的东西,例如不适合快节奏的游戏),例如每帧在特定方向上移动宇宙飞船,运动是跳跃的,不太顺利.屏幕甚至似乎都在撕裂.

CompositionTarget和DistpatcherTimer之间似乎没有区别.我使用以下方法(在伪代码中):

Register Handler to Tick-Event of a DispatcherTimer
In each Tick:
Compute the elapsed time from the last frame in milliseconds
Object.X += movementSpeed * ellapsedMilliseconds
Run Code Online (Sandbox Code Playgroud)

这应该会导致运动平稳,对吧?但事实并非如此.这是一个例子(控件:WASD和鼠标):Silverlight游戏.虽然我所描述的效果在这个示例中并不太普遍,但我可以向您保证,即使在画布上移动单个矩形也会产生跳跃动画.

有人知道如何最小化这个.有没有其他方法可以使用Storyboards/DoubleAnimations来解决基于帧的动画问题?

编辑:这是一个快速而肮脏的方法,用最少的代码(控件:A和D)动画样本制作动画

XAML:

 <Grid x:Name="LayoutRoot" Background="Black">
    <Canvas Width="1000" Height="400" Background="Blue">
        <Rectangle x:Name="rect" Width="48" Height="48"
                   Fill="White"
                   Canvas.Top="200"
                   Canvas.Left="0"/>
    </Canvas>
</Grid>
Run Code Online (Sandbox Code Playgroud)

C#:

private bool isLeft = false;
    private bool isRight = false;
    private DispatcherTimer timer = new DispatcherTimer();
    private double lastUpdate;

    public Page()
    {
        InitializeComponent();

        timer.Interval = TimeSpan.FromMilliseconds(1);
        timer.Tick += OnTick; …
Run Code Online (Sandbox Code Playgroud)

silverlight animation

6
推荐指数
1
解决办法
2117
查看次数

WPF Adorner转型

我正在构建一个控件,用户可以在其中"绘制"放置在内容上的可调整大小的矩形.要调整这些矩形的大小,我在它们上面使用一个包含4个Thumb的Adorner来改变矩形的大小.

问题是,此控件是"可缩放的",这意味着ScaleTransform将根据缩放系数应用于整个控件.Adorner中的Thumbs也受此ScaleTransform的影响.

但我需要它们来保持它们的大小,与缩放因子无关.我尝试将Adorners放在另一个非转换控件的Layer中,而不是矩形层,但这不起作用.我怎样才能做到这一点?

谢谢,Andrej

wpf transform adorner

6
推荐指数
1
解决办法
2251
查看次数