- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一些涉及装饰器的 WPF 代码。我正在使用 Josh Smith 的 UIElementAdorner.cs(在他的项目中找到 Infragistics Blog )。我装饰着信息文本的简介。我需要巧妙地放置我的装饰物,这样它就不会从屏幕上剪下来。
确定我是否要剪辑的最佳方法是什么?
我正在使用以下代码来创建和放置我的装饰器。我有一种有趣的感觉,基于我是否会剪辑 AdornerLayer不是最好的选择。
var infoBubble = new InfoBubble {InformationText = @"I like cheese."};
var adornedElementRect = new Rect(Target.DesiredSize);
var layer = AdornerLayer.GetAdornerLayer(Target);
var adorner = new UiElementAdorner<Control>(Target) { Child = infoBubble };
adorner.Measure(new Size(layer.ActualWidth, layer.ActualHeight));
var adornerRect = new Rect(adorner.DesiredSize);
var top = -1*(adornerRect.Height);
var left = adornedElementRect.Width/2;
// Using layer to judge where to place the adorner
var upperLeftPoint = Target.TranslatePoint(new Point(left, top), layer);
var lowerRightPoint = Target.TranslatePoint(new Point(left + adornerRect.Width,
top + adornerRect.Height), layer);
if (upperLeftPoint.Y < 0) top -= upperLeftPoint.Y; // shift down by Y
if (lowerRightPoint.X > layer.ActualWidth)
left -= (lowerRightPoint.X - layer.ActualWidth); // shift left
请记住,此代码包含在 TargetedTriggerAction 中设计师(又名 Blend 用户)希望在某些 UI 元素上方显示信息时使用。因此,这段代码对要装饰的元素或其环境知之甚少。
最佳答案
是的,这是我能辨别的最佳答案。
根据进一步阅读和一些实验,当调用 GetAdornerLayer 时,我们收到可视化树中目标控件上方的最低层。这意味着我们可以在 AdornerDecorator 下面得到一层在窗口模板中定义的图层。较低的 AdornerDecorator 可以有 ClipToBounds="True"(我不知道为什么,但它可以)。
了解此信息后,我可以相对确定我正在绘制的 AdorneLayer 是我正在绘制的最佳边界框。我可以在此框外绘制(例如,如果 ClipToBounds 在低于 Window 的 AdornerDecorator 上为 False),但我不应该指望这种能力。
关于wpf - 我应该使用 AdornerLayer 来避免在屏幕外剪裁我的装饰器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3401072/
我正在编写一些涉及装饰器的 WPF 代码。我正在使用 Josh Smith 的 UIElementAdorner.cs(在他的项目中找到 Infragistics Blog )。我装饰着信息文本的简介
为什么装饰层总是呈现为应用程序中的最顶层(在 AdornerDecorator 下 - 请参阅屏幕截图)? 有没有办法更改可以绘制装饰器的图层/级别? 在以下屏幕截图中,将 AdornerLayer
我面临的事实是我无法理解如何为 UIElement 添加 AdornerLayer。 我有这样的情况: 我有一个使用 3 个控件构建的 WPF 表单:一个 Grid,上面有 1 个 Button 和
我创建了裁剪包含在网格内边框内的图像的逻辑。网格有很多边框,所以这个网格会有很多图片。问题是,当我缩放图片时,逻辑缩放了图片(没关系),但是当我使用裁剪逻辑时,AdornerLayer 像图片一样超出
我有一个图像编辑应用程序,我有自定义装饰器,这些装饰器被添加到 AdornerLayer。当用户点击一个装饰器时,我想将它带到顶部 - 这意味着如果它被拖到另一个装饰器上,我希望第一次点击被最上面的装
我是一名优秀的程序员,十分优秀!