改變文本錨點下面是一些XAML:WPF - 在畫布
<Grid Width="200" Height="200">
<Canvas Background="Beige">
<Line X1="0" X2="200" Y1="100" Y2="100" Stroke="Black"/>
<Line X1="100" X2="100" Y1="0" Y2="200" Stroke="Black"/>
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" Margin="2">
<TextBlock.RenderTransform>
<TranslateTransform X="100" Y="100"/>
</TextBlock.RenderTransform>
hello world1
<LineBreak/>
hello world2
<LineBreak/>
hello world3
</TextBlock>
</Canvas>
</Grid>
我希望文字出現在我Canvas
,而不是右下象限的右上象限。
是否有可能在WPF中做?
目前文本是從全文繪製到底部,我想它是從bottomleft到topright繪製的。我在Canvas
的網絡上找不到答案。
在我的生產代碼中,文本應該可以是任何長度和高度。
編輯:
我被要求提供一個完全工作的樣品,所以這裏有雲:
XAML:
<Window x:Class="WpfApp1.MainWindow"
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"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<!--The drawing area can be anything, a grid, a panel, a canvas... Can't just use specific alignment tools so I have to use a Transform-->
<Grid x:Name="DrawingArea" Background="Beige" MouseMove="UIElement_OnMouseMove">
<TextBlock x:Name="TextBlock" Margin="2">
hello world1
<LineBreak/>
hello world2
<LineBreak/>
hello world3
</TextBlock>
</Grid>
</Grid>
</Window>
後面的代碼:
using System.Windows.Input;
using System.Windows.Media;
namespace WpfApp1
{
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
}
private void UIElement_OnMouseMove(object sender, MouseEventArgs e)
{
var mousePos = e.GetPosition(DrawingArea);
TextBlock.RenderTransform = new TranslateTransform(mousePos.X, mousePos.Y);
}
}
}
當前文本出現在默認的Windows鼠標光標下方,我希望它出現在默認的Windows鼠標光標上方。
那麼,爲什麼你不只是減去mousePos.Y將TextBlock的的ActualHeight? – Clemens
目前我知道使用代碼隱藏的文本高度,但在我的實際應用程序(基於MVVM)我無法獲得文本的高度。所以它需要以某種方式從ValueConverter或其他東西的文本中的「Transform」中減去。我不知道如何做到這一點? – ManIkWeet
所以你的問題中的代碼再次沒有顯示你實際在做什麼。你期望在這裏得到什麼支持? – Clemens