首页 文章

Adorner转换与像素宽度

提问于
浏览
0

我目前正在制作一个稍微复杂的装饰师 . 当用户缩放时,这个将仅在一个维度上变换 . 不幸的是,这对它周围漂亮的1px发线边界造成了严重破坏(我希望它仍然是一个很好的发际边界 - 即使在转型的维度) .

这是我对问题的诊断:

假设我将缩放变换应用于装饰的UIElement . WPF然后调用以下内容

  • 装饰UIElement的ArrangeCore()

  • Adorner的MeasureOverride()

  • Adorner's ArrangeOverride()

  • Adorner的OnRender()

  • Adorner的GetDesiredTransform(...)

最后两个似乎对我不利 . 如果我正确地读这个,那就意味着,当我覆盖GetDesiredTransform时,它太迟了 . 是的,我确实可以扩展/翻译/倾斜我的装饰,但问题是:如果我想如上所述做什么,即仅在一个维度上缩放并在装饰者上保持1px细线边界?好吧,我不能,可以吗?

如果我要使用装饰品,在我看来,我必须将它们分成单独的装饰品 - 那些将要扩展的装配工和那些不装配的装配工 . 好像很多工作 . 我在这里的通话顺序上遗漏了什么吗?我想我可以一直触发OnRender从视觉树到叶子,但这看起来像是大规模的矫枉过正 .

1 回答

  • 0

    您可以将边框与装饰者的内容分开 .

    内容转换,不涉及边界 .

    你能发布你的装饰模板的样子吗?

相关问题