DrawingVisual skapa en text ruta som uppkommer när musen är över ett objekt och försvinner därefter.
Så jag försöker att manuellt skapa en text ruta som visar musens x och y positioner när den hålls över ett objekt men har kört fast vid att textrutan framkommer men så fort den skapas tas den bort. Koden ska kunna ta bort rutan när musen inte längre är över objektet så jag skapade en MouseEnter och en MouseLeave methoder för att hålla koll på detta och ta bort rutan. Istället så fungerar allt bara att text rutan ständigt tas bort och läggs till och jag vet inte varför. Vad i min logik är fel?
Varför går MouseLeave metoden igång varje gång MouseEnter metoden går av?
Koden är inte klar jag vill bara få feedback till varför det inte fungerar som jag tycker det borde göra.
private Image textImage;
private bool inShape;
public MovementTestWindow()
{
InitializeComponent();
inShape = false;
textImage = new Image();
DrawText(new Point(100, 100), "Shape");
}
private void MouseEntered(object sender, MouseEventArgs e) //Händer när man kommer in.
{
if (inShape == false)
{
inShape = true;
}
myGrid.Children.Add(textImage);
UpdateTextBox();
}
private void UpdateTextBox()
{
string txt = "In Shape: " + inShape.ToString();
Status.Text = txt;
}
private void MouseLeft(object sender, MouseEventArgs e) //Händer när man lämnar.
{
if(inShape == true)
{
inShape = false;
}
myGrid.Children.Remove(textImage);
UpdateTextBox();
}
private void DrawText(Point point, string shapeName)
{
var visual = new DrawingVisual();
using (var obj = visual.RenderOpen())
{
FormattedText text = new FormattedText(shapeName, CultureInfo.GetCultureInfo("en-us"), FlowDirection.LeftToRight, new Typeface("Verdana"), 14, new SolidColorBrush(Colors.Black));
obj.DrawText(text, point);
}
PixelFormat format = new PixelFormat();
RenderTargetBitmap rtv = new RenderTargetBitmap(600, 600, 96.0, 96.0, format);
rtv.Render(visual);
textImage = new Image();
textImage.Source = rtv;
}
Så jag kommer ihåg. [code][/code]