Voici quelques XAML:WPF - changement ancre texte dans Canvas
<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>
Je veux que le texte apparaisse dans le quadrant supérieur droit de mon Canvas
au lieu du quadrant inférieur droit.
Est-il possible de faire dans WPF?
Actuellement, le texte est tiré de topleft à droite, je voudrais qu'il soit tiré de bottomleft à topright. Je n'ai pas trouvé de réponse sur Internet qui fonctionne à l'intérieur d'un Canvas
.
Dans mon code de production, le texte doit pouvoir être de n'importe quelle longueur et hauteur.
Edit:
on m'a demandé de fournir un échantillon entièrement travail, ainsi va ici:
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>
code derrière:
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);
}
}
}
Actuellement le texte apparaît sous le curseur de la souris Windows par défaut, je voudrais qu'il apparaisse au-dessus du curseur de la souris Windows par défaut.
Alors, pourquoi ne pas vous soustrayez simplement le ActualHeight de TextBlock de mousePos.Y? – Clemens
Actuellement, je connais la hauteur du texte en utilisant codebehind, mais dans mon application actuelle (basée sur MVVM) je ne peux pas obtenir la hauteur du texte. Donc, il faudrait en quelque sorte être soustrait de la 'Transform' sur le texte avec un ValueConverter ou quelque chose. Je n'ai aucune idée sur la façon de faire cela? – ManIkWeet
Donc le code dans votre question ne montre pas encore ce que vous faites réellement. Comment espérez-vous obtenir un soutien ici? – Clemens