【问题标题】:WriteableBitmap Transform to Center?WriteableBitmap 转换为中心?
【发布时间】:2012-01-12 08:20:52
【问题描述】:

我需要在 WriteableBitmap 的水平中心放置一个用户控件(在本例中为 TextBlock),这是我目前提供的代码:

textblock1.RenderTransformOrigin = new Point(0.5, 0.5);
wp.Render(textblock1, new TranslateTransform() {Y = topMargin, X = imgWidth / 2});

但似乎文本块的枢轴点仍在控件的左边缘,我哪里做错了?

【问题讨论】:

    标签: c# silverlight transform centering writeablebitmap


    【解决方案1】:

    您可能正在按中心进行变换,但 TranslateTransform 移动中心的距离与任何其他点的距离相同。这就像抓住一张纸并将其向左移动一英寸。无论你在哪里抓它。

    试试这个:

    wp.Render(textBlock1, new TranslateTransform() {Y = topMargin - textBlock1.Height / 2, X = imgWidth / 2 - textBlock1.Width / 2});
    

    除非您使用旋转/缩放/矩阵等,否则您可以忘记 RenderTransformOrigin。

    【讨论】:

    • 我之前试过,结果是左对齐...我认为这是因为 TextBlock 的宽度没有明确分配,因为 TextBlock 的内容将取自输入文本框
    • textBlock1.Width == 0 吗?如果它实际上不是 GUI 树的一部分,则可能会发生这种情况(现在忘记真实名称)。
    • 是的,它不是 VisualTree 的一部分。无论如何,没关系,只是通过将TextBlock的Width设置为imgWidth来解决它,并将其对齐设置为center,然后它将进入水平中心而不进行转换。我为没有早点意识到这一点而感到羞耻。谢谢! :)
    • 我正要建议调用 Measure,然后使用 DesiredSize,但您的解决方法同样出色。
    猜你喜欢
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多