Entwickler-Ecke
Basistechnologien - Labels erzeugen und wieder löschen...
HoPPeL - Do 06.10.11 18:24
Titel: Labels erzeugen und wieder löschen...
Hi,
habe folgende Schleife:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| for (int i = 0; i < 8; i++) { vtkTextActor LabelActor = new vtkTextActor(); LabelActor.GetTextProperty().SetFontSize(12); LabelActor.GetTextProperty().BoldOn();
LabelActor.SetPosition(ScalarBar.GetWidth() * size[0] + 10, (((1 - ScalarBar.GetHeight()) / 2) * size[1] * 0.96) * (i + 1)); LabelActor.SetInput(string.Format("{0:F2}" + "°C", Tempmin + temp * i)); LabelActor.GetTextProperty().SetColor(1.0, 0.0, 0.0);
Ren1.AddActor2D(LabelActor); } |
aber denke, dass das Ganze ziemlich unsauber ist...
Das Problem ist, dass ich momentan nicht weiß, wie ich die erzeugten labels dann wieder loswerde?
Oder gibts ne bessere, sauberere Variante, bei der es gar nicht zu solchen problemen kommt?
mfg
Th69 - Do 06.10.11 19:58
Hallo HoPPeL,
vllt. solltest du ersteinmal schreiben, mit welcher Library du arbeitest (denn 'vtkTextActor' ist zumindestens keines der Standard WinForms-Komponenten)?
Und was ist 'Ren1' für eine Komponente? Wenn diese eine AddActor2D-Methode hat, so wird diese doch auch sicherlich eine Remove oder Delete-Methode besitzen?
C# - Do 06.10.11 20:08
Hallo,
ich weis nicht ob das hier funktioniert. Ist nur so ne Idee:
C#-Quelltext
1: 2:
| var element = GetChildAtPoint(new Point(x, y)); element.Dispose(); |
oder mach es so:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| for (int x = 0; x < Size.Width; x++) { for (int y = 0; y < Size.Height; y++) { try { var element = GetChildAtPoint(new Point(x, y)); if (element.Text == "xyz") element.Dispose(); } catch { throw; } } } |
Wenn
Dispose() nicht klappt, probier es mit
Hide(), was das Objekt allerdings nur verbirgt...
P.S. Die zweite Methode solltest du evtl. als eigenen Thread Starten, da sie je nach Formgröße ziemlich Zeitaufwändig werden kann.
HoPPeL - Do 08.12.11 14:38
so nach meiner 2 monatigen auszeit, habe ich mich wieder an das problem gesetzt.
mein Labelactor besitzt dieverse Methoden um in wieder zu entfernen, wie z.b.
C#-Quelltext
1:
| Operations.LabelActor.VisibilityOff(); |
aber ich habe ja 8 stück, die alle gleich heißen und somit wird immer nur der letzte erstellete labelactor unsichtbar gemacht?!
mfg
ujr - Do 08.12.11 15:31
Hallo C#,
was genau bezweckst Du mit
C# hat folgendes geschrieben : |
|
zudem ist der angegebene Grund für "try/catch" nicht stichhaltig - bestenfalls, wenn Element "dynamic" ist, ansonsten beschwert sich schon der Compiler.
Hallo HoPPeL,
leider bist Du immer noch Details zur von Dir verwendeten Bibliothek schuldig geblieben.
HoPPeL - Do 08.12.11 16:16
Th69 hat folgendes geschrieben : |
Hallo HoPPeL,
vllt. solltest du ersteinmal schreiben, mit welcher Library du arbeitest (denn 'vtkTextActor' ist zumindestens keines der Standard WinForms-Komponenten)?
Und was ist 'Ren1' für eine Komponente? Wenn diese eine AddActor2D-Methode hat, so wird diese doch auch sicherlich eine Remove oder Delete-Methode besitzen? |
Also es handelt sich um bei meiner genutzten bibliothek um
http://www.vtk.org/
Ren1, ist meine renderer, dem ich eben meine labels mit zuordne, damit diese dann mit auf dem bildschirm ausgegeben werden.
mfg
ujr - Do 08.12.11 17:15
HoPPeL hat folgendes geschrieben : |
Ren1, ist meine renderer |
Nimm einfach mal an, dass die Mehrzahl der Leser hier diese Bibliothek nicht kennt. Und dann noch mal: renderer? Was ist das für eine Klasse?
Du zitierst so schön, was Th69 schrieb - was ist denn mit der Remove-Methode? vtk hat doch eine umfangreiche Dokumentation.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!