Laden...

Forenbeiträge von Red-Sh4nks Ingesamt 47 Beiträge

12.01.2020 - 15:16 Uhr

Vielen Dank für die hilfreichen Antworten. Fürs Erste erscheint mir der externe Aufruf des R-Skriptes als der bessere Weg.

11.01.2020 - 09:29 Uhr

Hallo liebe Community!

Ich wollte einmal fragen, ob jemand hier schon Erfahrungen mit der Anbindung der Programiersprache R in C# gesammelt hat?

Bei meiner Recherche bin ich unter anderem auf den folgenden Artikel gestoßen:
https://coders-corner.net/2015/11/01/use-r-in-c/

Für mich sieht es aber so aus, als ob diese Anbindung nicht besonders zukunftsorientiert ist.
Möglicherweise gibt es ja jemanden, der mehr dazu weiß und mir dazu raten bzw. abraten kann.

Liebe Grüße

14.01.2017 - 15:02 Uhr

Gibt es eine Möglichkeit dieses Standardverhalten von Windows zu umgehen?

Ich habe bereits folgenden Ansatz versucht:
Die Forms sich über den gesamten Bildschirm erstrecken lassen und den Bereich außerhalb als transparent setzen. Dies hat aber nicht geklappt weil Visual C# keine transparenten Hintergründe bei Forms unterstützt.

Eine andere Lösung, die garantiert klappt, wäre es natürlich alle Forms zu einer einzigen zusammenfassen... und dann den Hintergrund dementsprechend ändern. Aber das wäre dann unglaublich unpraktisch und ineffizient programmiert. Da muss es doch was besseres geben.

13.01.2017 - 23:01 Uhr

Ok, das wäre dann die Lösung zum genannten Miniproblem. Danke. Und wie kann ich das Hauptproblem lösen?

13.01.2017 - 01:24 Uhr

Hallo hoch geschätzte mycsharp-Community!

Ich ersuche eure Hilfe bei einem Cursor-Problem: Ich habe einen eigenen Cursor erstellt (CustomCursor.cur) und möchte das dieser in meinem Programm über all angewandt wird. Dies habe ich erreicht mit:


this.Cursor = NativeMethods.LoadCustomCursor(Application.StartupPath + "\\" + SVW.getStandardCursorName());

Miniproblem:
Die Änderung gilt nur in der Form, wo ich diesen Befehl ausführe... d.h. ich muss diesen Befehl im Moment bei jeder Form im Konstruktor extra ausführen. Kann man das nicht global (auf einen Customcursor) ändern? ... beispielsweise mit Vererbung?

Hauptproblem:
Der Customcursor wird nur innerhalb der Form angenommen. D.h. wenn ich eine kleine Messageform öffne, so nimmt der Cursor nur innerhalb dieser Form den Customcursor an und wechselt außerhalb sofort wieder in den Standard-Pfeilcursor.

Disclaimer:
Weder mittels Google, noch mit der im Forum integrierten Suchfunktion, konnte ich eine Lösung finden.

05.01.2017 - 23:31 Uhr

Hallo Grombi! Hallo MrSparkle!

Vielen vielen Danke für eure Hinweise. Mit Stringbuilder konnte ich die Datensammlungsdauer samt Speichervorgang von inzwischen ~8 Sekunden noch weiter runter auf 0,5 Sekunden reduzieren. Damit kann ich leben. Herzlichen Dank!

LG

05.01.2017 - 19:22 Uhr

@MrSparkle: Ja, da hast du recht!

@Abt: Nachdem sich meine Problemstellung geändert hat, dachte ich, dass es besser wäre, wenn ich mich zuerst durchs Forum wühle bevor ich euch mit Frage löchere 😃 Aber der Vollständigkeit zu liebe das neue Problem:

Es existieren 2 ineinander verschachtelte for-Schleifen mit jeweils etwa 400 Durchläufen (insgesamt also ~400^2 = 160.000 Durchläufe). Der Code sieht in etwa so aus:


string Speicher = "";

for (int i = 1; i < 390; i++)
            {
                Speicher += KlassenInstanz.getInfoXY().ToString();
                ...

                for (int j = 1; j < 400; j++)
                {
                    Speicher += KlassenInstanz.getI(i).getJ(j).ToString();
                }
            }

Ich werde jetzt mal versuchen diese inner for-Schleife zu ersetzen. Wenn das nicht klappt, wühle ich mich mich mal wieder durch das Forum.

EDIT: Hab die innere for-Schleife mit der String.Join Methode ersetzen können. Damit ist die Speicherzeit auf 8 Sekunden gesunken.

05.01.2017 - 17:06 Uhr

Ja, wie gesagt ich hatte beim Sammeln der Daten diese exzessive Schleife übersehen und deswegen von vornherein das Speichern als Zeitfresser im Verdacht. Deswegen habe ich nach Lösungen dazu gesucht. Ich habe mich geirrt 😃 Das Thema sollte damit erledigt sein.

@Abt:

Das wäre dann mit einem einfachen Locking zu bewerkstelligen, dass keine neue Abarbeitung startet, solange eine aktuelle noch läuft.

Ich bin weit nicht so erfahren wie du, deswegen verzeih mir bitte diese laienhafte Frage: Wenn ich deine suggerierte Methode anwenden würde und die Dauer pro Ausführung 60s beträgt, aber dieser Vorgang im 10 Sekunden Intervall ausgeführt wird, dann müsste sich diese doch kleinweise stapeln, wenn sie hintereinander ausgeführt werden. Oder liege ich da falsch?

LG

05.01.2017 - 15:26 Uhr

Vielen Dank für die Antworten.

@Abt und LaTino:
Ihr habt recht. Ich habe jetzt ebenfalls einen randomgenerierten String verwendet und siehe da: Das Problem ist verschwunden. Darauf habe untersucht wie die Daten zusammengetragen. Dabei bin ich auf eine For-Schleife mit ~400^2 Durchläufen gestoßen. Beim Stoppen eines Speichervorgangs konnten dort 50 Sekunden Rechenzeit nachgewiesen werden. Deswegen muss ich jetzt diese Schleife irgendwie beschleunigen. (parallel.foreach fällt, fürchte ich, schon mal weg, da die Daten chronologisch gespeichert werden müssen)

@weismat: In diesen 500KB stecken die Daten die regelmäßig von verschieden Klasseninstanzen zusammengetragen (in Abständen von ~10 Sekunden) und als Backup gespeichert werden müssen, damit bei einem Absturz kein Fortschritt verloren gehen kann (Verlauf muss aufgezeichnet werden). Wenn alle 10 Sekunden ein Thread eröffnet wird, der 60 Sekunden Abwicklungszeit benötigt, wird das Programm früher oder später terminieren. Deinen ersten Ratschlag werde ich mir zu Herzen nehmen.

05.01.2017 - 00:05 Uhr

Hallo geschätzte mycsharp-Community!

Ich stehe vor einem Speicherproblem. Gegeben ist relativ großer String, welcher abgespeichert in einer Textdatei eine Größe von ungefähr 0,5 MB besitzt. Wenn ich diesen String nun mittels


            StreamWriter myFile = new StreamWriter(newPath);
            myFile.Write(Speicher);
            myFile.Write(
            myFile.Close();

speichern will, so benötigt das Programm ca. 1 Minute dafür. Auch


System.IO.File.WriteAllText(newPath, Speicher);

beschleunigt das Ganze nicht. Jetzt meine Frage: Kennt jemand eine Möglichkeit, wie dieser Vorgang beschleunigt werden kann?

Anmerkungen:*Ich habe mit Google keine Lösung gefunden *Ich habe auch im Forum keine Lösung gefunden *Diese Funktion wird in kurzen Zeitabständen aufgerufen. Threads sind daher keine Option

26.07.2013 - 15:45 Uhr

Haha! Ich habe es zuerst mit & versucht und darauf gepostet. Mit | funktioniert es 😉 Danke!

Also:

label1.Font = new Font(new FontFamily("Wingdings"), 22, FontStyle.FontStyleName1 | FontStyle.FontStyleName2);

@Lennart: Stell dir vor das habe ich sogar zuvor aber ich habe nirgendwo gefunden wie man diese verknüpft

26.07.2013 - 15:34 Uhr

Hallo Leute!

Ich hab ein einfaches aber doch interessantes Problem bei dem ich gerade hänge. Ich besitze viele
labels und denen möchte ich per Code(!) einen bestimmten fontstyle zuweisen: bold und italic

label1.Font = new Font(new FontFamily("Wingdings"), 22, FontStyle.FontStyleName);

Fontstylename = Bold, Italic,...
aber es ist nicht bold + italic vorhanden

Wenn man den Fontstlye über Rechtsklick auf das Label bearbeitet, kann man ja beide gemeinsam anhacken. Dies würde ich nun gerne programmintern machen.

02.12.2012 - 21:55 Uhr

Gut... Dann nutze ich eben den AppData Ordner. Dennoch bleibt eine wahrscheinlich triviale Frage ungeklärt:

  1. So funktioniert es:
               
var fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),"trololo.abc");
                StreamWriter myFile = new StreamWriter(fileName);
  1. So nicht:
               
var fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) , "XYZ","trololo.abc");
                StreamWriter myFile = new StreamWriter(fileName);

Kurz und knapp. Ich würde dort wenigstens gerne einen eigenen Unterordner erstellen aber da der Ordner nicht vorhanden ist, schlägt 2 fehl. Wie kann ich dort diesen Ordner erstellen?

02.12.2012 - 18:24 Uhr

Hallo C#-Community!

Ich habe ein Programm geschrieben, welches mittels Setup installiert wird. Das Setup fordert
Admin Rechte und erstellt auch alle Dateien und Ordner in C:\Programme\XYZ brav. Während der Laufzeit soll das Programm aber Schreibrechte in diesem(!!!) Ordner besitzen. Irgendwie muss es doch möglich sein diese Schreibrechte zu vergeben, ohne dass das Programm jedes mal als Administrator gestartet werden muss.

Ich habe bereits zahlreiche Topics durchstöbert, aber es wurde immer nur verwiesen, dass das Programmverzeichnis nicht der richtige Ort dafür ist und AppData dafür gedacht ist.

nice greets

08.11.2012 - 22:49 Uhr

Bei mir hat es den Cursor für nur eine Form übernommen.
Mit Basisklassen lässt sich das Problem schön lösen.
Danke für den Tipp!

08.11.2012 - 21:51 Uhr

Danke für die schnelle Antwort 😃

Aber diese Methode muss erst wieder in jede
Form neu reinkopiert werden, oder?

Ich würde gerne wissen ob ich einen Custom-Cursor gleichzeitig
allen Forms zuweisen kann? Also z.B. das ich den Default Cursor
in meinem Projekt durch meinen Custom Cursor ersetze.

mfg

08.11.2012 - 20:00 Uhr

Guten Abend alle miteinander!

Ich habe ein Projekt in Visual Studio 2010 (C#) mit über 100 Forms. In all diesen Forms
und über all diesen Controls würde ich gerne einen Custom-Cursor verwenden.

Wie kann ich dies mit möglichst wenig Aufwand lösen?

this.Cursor = new Cursor(Application.StartupPath + "\\Cursor1.cur");

in jede Form zu kopieren ist nicht die einzige Lösung, oder? Da muss
es doch eine schöne allgemeine Variante geben, dies zu bewerkstelligen.

mfg

06.01.2012 - 23:17 Uhr

Hallo!

Besitze eine Form. Nennen wir diese Dummy. Falls ich nun ich Programm Dummy.show() ausführe und anschließend Code der ~10 Sekunden für die Ausführung braucht, so wird die Form Dummy zwar angezeigt, allerdings werden labels nicht richtig interpretiert, sprich sie sind transparent ohne text. Erst nachdem der Code (welcher ~10 Sekunden dauert) ausgeführt wird, wird die Form Dummy korrekt aufgebaut.

Wie kann ich das verhindern? Mittels Threading wäre natürlich eine Möglichkeit in Kombination mit Showdialog. Aber gibt es noch andere Möglichkeiten?

24.12.2011 - 11:57 Uhr

Frohe Weihnachten!

Auch an diesem Tag wird geackert 😄 Ich habe folgendes Problem:
Beim Ändern von Hintergründen von Buttons bin ich bislang so vorgegangen:


btn_nsp_ban2.BackgroundImage = new Bitmap(RandomNames.getImagePfad() + "ban2" + RandomNames.getImageEndung());

Inzwischen habe ich diese Images alle als Resourcen eingebunden. Jetzt sieht das Ganze so aus:


btn_nsp_ban2.BackgroundImage = new Bitmap(Conspiratio.Properties.Resources.ban2);

Manchmal muss ich die Images aber auch über einen Dynamischen String abrufen. Bei den Controls habe ich folgenden Befehl:


this.controls["btn_nsp_ban" + i.toString()].BackgroundImage...

Gibt es auch so einen ähnlichen Befehl um Resources dynamisch abzurufen?
z.B.:


this.resources["ban" + i.toString()]?

Ich bin auf den Begriff ResourceManager-Klasse gestoßen. Hilft mir dieser das gewünschte zu erreichen? Gibt es Alternativen?

nice greets*

06.10.2011 - 11:40 Uhr

Gut! Die Lösung hat funktioniert! Bei zu vielen Steuerelementen werden die zuletzt hinzugefügten anscheinend erst zuletzt abgearbeitet (was bei >400 schon bis zu 2 Sekunden dauern kann)

30.09.2011 - 10:02 Uhr

Es wird noch einige Zeit dauern, bis ich diese großen Änderungen umgesetzt habe...

22.09.2011 - 12:29 Uhr

Ich werde mich umgehend an die Arbeit machen. Ich denke auch, das wird die Lösung sein. Vielen Dank herbivore. Ich melde mich nochmal ob es funktioniert hat.

22.09.2011 - 11:37 Uhr

"eine der negativen Auswirkungen" hört sich wirklich nicht gut an... Naja, ich habs jetzt umprogrammiert, aber dieser Fehler ist noch immer vorhanden.

Eine Idee von mir warum es noch sein könnte: Auf dieser Form befinden sich über 200 Controls. Könnte es damit zusammenhängen? Möglicherweise prüft er jedes einzelne Control nochmal und da dieses Control einen sehr hohen Tabindex hat (es wurde zuletzt angelegt), wird es erst später aktualisiert.

21.09.2011 - 19:35 Uhr

Das Problem lässt sich mit den wenigen für die Überschrift erlaubten Buchstaben schwer beschreiben. Deshalb hier nochmal Schritt für Schritt:

Vorwort: Button hat ein eigenes Bild (egal ob Background- oder normales Image)

  1. Ich habe eine Form mit Backgroundimage und auf ihr einen transparenten Button
  2. Wenn ich nun das Backgroundimage ändere und den Button visible mach, dann ist der Button sofort sichtbar und hat für ~2 Sekunden die Farbe des alten Backgroundimages(was sich deutlich vom neuen unterscheidet und stört daher) genau übernommen.
  3. Button übernimmt das Image vom Bild

Ich vermute, dass die Funktion "visible" die Items nur auf transparent schaltet und daher dieser Fehler kommt. Wie er entsteht ist allerdings nicht so interessant wie eine gute Lösung!

Ich hoffe, ihr könnt mir helfen.

21.09.2011 - 19:27 Uhr

Möglicherweise! Aber da es sich nur um ein Intro handelt welches solange abgespielt wird, bis der Benutzer Rechtsklickt, tut es FormShown.

19.09.2011 - 13:39 Uhr

Form1_Shown ist genau das was ich gesucht habe! Vielen Dank!

19.09.2011 - 13:18 Uhr

Also ich hab bei den Ereignissen (Events) "Load" ausgewählt und dort zum Probieren eine MsgBox ausgegeben. Dann öffnet sich die MsgBox und erst wenn ich diese schließe, wird die Form angezeigt.

private void Form1_Load(object sender, EventArgs e)
        {
        }

funktioniert also nicht. Ich benötige die Methode direkt nachdem die Form geöffnet und angezeigt wird.

19.09.2011 - 12:35 Uhr

Hallo allerseits!

Ist heute schon mein zweiter Post hier und komme mir daher etwas unbeholfen vor... Egal! Wenn ich mein Programm starte wird zuerst der Konstruktor

public Form1()
{
      bla bla bla...
}

aufgerufen und ausgeführt. Korrigiert mich bitte wenn ich falsch liege. Aufjedenfall will ich direkt danach eine Methode aufrufen die eine Benutzerinteraktion in Form eines Rechtsklicks erfordert. Wenn ich diese Methode bereits mitten im Konstruktor aufrufe, wird die GUI (Form) gar nicht angezeigt, da der Rechtsklick noch nicht erfolgt ist und logischerweise auch nicht erfolgen kann.

Wie löse ich nun dieses Problem? Eine Möglichkeit ist es einen Timer am Ende des Konstruktors zu starten und diesen nach einer gewissen Zeit die Methode aufrufen lassen. Das ist allerdings unsauber und erhoffe mir eine bessere Lösung.

Falls jemand einen Vorschlag hat, immer her damit 😃

19.09.2011 - 11:43 Uhr

@chilic: Da es sich um ein Spiel handelt, sollte die Taskleiste ausgeblendet sein.
@winSharp93: Vollbild klappt vermutlich auch! Herzlichen Dank 😃 Nur zur Richtigstellung: es heißt "WindowsState" und nicht "WindowStyle".

Danke nochmal!

19.09.2011 - 11:17 Uhr

Hallo! Ich habe ein Programm welches auch die Taskleiste überragen soll. Allerdings finde ich keinen Beitrag in dem das beschrieben wird (Suchfunktion hat nichts ausgespuckt). Vollbild wäre auch möglich, aber einfach ein Code der meine Form in den Vordergrund über die Taskleiste blendet wird präferiert 😃

16.07.2011 - 15:05 Uhr

LOL!

Bei meinem Programm wird ja eine neue Form geöffnet. Obwohl sie die Grundlegenden Eigenschaften von der vorigen eigentlich übernehmen sollte, hat sie es nicht. Doublebuffered war bei der aktiven Form also auf false. Fail...

16.07.2011 - 14:51 Uhr

das ist ja bei weitem nicht der einzige Tipp, der gegeben wird. Bist du sicher, dass du alles durch hast? Insbesondere DoubleBuffer sowohl für das Form als auch für alle Buttons? Und auch alles andere?

Habe alles durchprobiert. Allerdings habe ich dasselbe programm jetzt vereinfacht und wesentlich kleiner neu programmiert. Siehe da! Es funktioniert. Anscheinend ist der Fehler irgendwo tiefer verankert. Mal sehen. Wenn ich ihn finde, poste ich woran es gelegen ist.

15.07.2011 - 21:59 Uhr

btn_amt1.Top = 110;
                id = RandomNames.getStadtwithID(StadtID).getBuergermeister();
                btn_amt1.Text = "Bürgermeister" + "\n" + RandomNames.getKIwithID(id).getName();
                btn_amt1.Left = (this.Width - btn_amt1.Width) / 2;

Das wird ausgeführt. Zum Schluss wird noch ein Invalidate ausgeführt. Das Invalidate habe ich aber auch schon ausgestellt und es flackert trotzdem.

Der Button ist transparent und wird beim Klick eines anderen Buttons umpositioniert.

also bei mir flackert da gar nix. Egal ob Transparent, mit Farbe, mit transparentem Image drauf oder was auch immer.

Bei meinem Button is die BackColor auf transparent gesetzt.

lg Marco*

15.07.2011 - 20:46 Uhr

Hallo wieder einmal 😄

Ich habe ein klassisches Problem. Ich möchte auf meiner Form mehrere Buttons hin und herschieben. Dabei allerdings flackern diese wie wild. Der Standardthread [FAQ] Flackernde Controls vermeiden / Schnelles, flackerfreies Zeichnen konnte mir leider nicht helfen. Der Unterschied bei meinen Buttons liegt darin, dass sie einen transparenten Hintergrund besitzen. SuspendLayout/ResumeLayout hat also nichts gebracht.

Ich habe es auch probiert ihre Sichtbarkeit auf false zu setzen, dann umzuordnen und dann erst wieder anzeigen. Auch das hat nicht geholfen, da das transparente Element beim unsichtbar machen schon flackert.

Irgendwelche Ideen wie man dieses Augenkrebsrerregende Problem lösen kann?

lg Marco*

13.07.2011 - 22:14 Uhr

Hallo liebe Programmiergemeinde!

Ich besitze das Programm "Visual C# 2010 Express" von Microsoft. Ich habe bereits die früheren Versionen verwendet und des Öfteren mit der "Setup-Project" in den Projektvorlagen auch Installationen zusammengestellt. Bei meiner aktuellen Version fehlt diese Vorlage allerdings. Kann ich die nachträglich einfügen? Wenn ja, wie? Wenn nein, welche Version hat diese Projektvorlage inkludiert?

Danke für eure Antworten!

lg Marco*

07.07.2011 - 00:44 Uhr

Natürlich gibt es die 😉 Ich wollte das Problem aber ordentlich lösen.

07.07.2011 - 00:26 Uhr

Variablennamen dynamisch zu vergeben ist in C# nicht möglich.

Genau das hatte ich vor. Gut zu wissen. Damit ist das Topic hinfällig, denn genau das würde ich gerne 😉

06.07.2011 - 23:55 Uhr

Hallo allerseits!

Ich hänge bei einem (vermutlich) sehr einfach lösbarem Problem. Ich möchte in einer For-Schleife mehrere Labels erzeugen, da ich situationsabhängig unterschiedlich viele benötige.

So sieht mein Versuch aus:


for (int i = 1; i < 22; i++)
                    {
                        if (prodWaren[i] != 0)
                        {
                            Label ["Ware_"+ i.ToString()] = new Label();
                        }
                    }

Wie bekomme ich es hin, dass ich das Label mit dem Namen und der Nummer der Ware benenne?

lg Marco*

28.06.2011 - 22:01 Uhr

Ahhhhhh! Das ist eine gute Idee! michlG hat anscheinend das gleiche gemeint und ich habe ihn nur nicht richtig verstanden. Danke, Jetzt komm ich alleine weiter 😉

28.06.2011 - 21:55 Uhr

Und zudem sollte man alles Eventbasiert machen. D.h. den Rechtsklick löst ein Event aus und du reagierst dann auf dieses.
Auf irgendwelche Benutzeraktionen sollte man nie warten

Danke für die sehr schnelle Antwort Michael 😃

Gut... Das es die UI-Inputs blockiert ist schon mal eine genaue Beschreibung von meinem fail. Zu Eventbasiert: Es wäre zwar eine schöne Lösung, aber es MUSS nunmal auf die Zustimmung des Benutzers (in Form eines Rechtsklicks) gewartet werden.

Gibt es noch andere Vorschläge?

lg Marco*

28.06.2011 - 21:47 Uhr

Hallo allerseits!

Ich habe eine Methode "RundeBeenden". Diese soll nun einige ihrer Funktionen ausführen und anschließend auf einen Rechtsklick warten. Sobald der Benutzer dann rechtsklickt, soll die Methode noch die restlichen Funktionen ausführen.

Ich habe es mit einem Bool "Rechtsklick" probiert, das bei einem Rechtsklick true gesetzt wird. Und in der Methode Rundebeenden läuft solange: while(Rechtsklick == false). Allerdings lässt dieses while keine Klicks in der Zwischenzeit zu, daher --> fail

Mit Threads wäre es leicht zu lösen, allerdings möchte ich threads gerne vermeiden. Meine Frage nun: Gibt es eine andere Möglichkeit, dieses Problem zu lösen, außer mit Threads?

Danke für eure Hilfe! 😃

lg Marco*

27.06.2011 - 23:09 Uhr

PC:

  • Anno 1602
  • Age of Empires 2
  • Empire Earth
  • Warcraft 3 Funmaps (Dota, Element TD,...)
  • Stronghold Crusader
  • Fugger 2
  • Left 4 Dead 2
  • Team Fortress 2
  • Teeworlds
  • Sieder 3
  • Diablo 2 (original und sämtliche Mods)
  • CS 1.6
  • COD 2

Konsolen:

  • Super Smash Melee (Gamecube)
  • Mario Kart 64 (N64)
  • James Bond Nightfire (Gamecube, PS2)

btw: Fugger 2 programmiere ich gerade in C# nach mit einigen Verbesserungen die mich sonst stets störten. Außerdem mache ich es Lan-fähig, damit es nicht immer so träge dahin geht 😉

16.06.2011 - 10:44 Uhr

Das hat mir geholfen. Vielen Dank Gwinn! 👍

Das zwischen Image und Backgroundimage so ein Unterschied besteht, hatte ich mir nicht gedacht. Obwohl es mehr als logisch ist, dass sich die Eigenschaft BackgroundImageLayout nur auf das BackgroundImage bezieht ^^

Danke nochmal!

16.06.2011 - 01:41 Uhr

Hallo hallo!

Ich habe einen Button, der ein Bild enthält. Das Bild wird mit der Eigenschaft stretch in BackgroundImageLayout auf die Größe vom Button gestreckt. Wenn ich aber nun das Bild des Buttons mittels

Button1.Image = Image.FromFile(@"../../../Images\" + "Diamantleuchtend." + "gif");

ändere, dann nimmt das neue Image nur seine Standardgröße an. Wie kann ich dem entgegenwirken?

lg Marco*

EDIT: Achja!

Ich habe die Eigenschaft BackgroundImageLayout ausgegeben und sie hat vor und nach der Änderung noch die Eigenschaft stretch. Deswegen komme ich auch nicht weiter! Danke schon im vorraus für Hilfe 😃

06.06.2011 - 13:28 Uhr

Lösung nach dem Prinzip der Root-Cause-Analysis: Verwende stattdessen eine Karte von den USA oder von Afrika. Da gibt es auch rechteckige Länder.

Die Karte ist leider vorgegeben.

wenn du eine politische Europakarte hast die bereits korrekt gefärbt ist braucht nur die Farbe an der Mausposition ermittelt werden und einer Tabelle (hier: ein Dictionary<Farbe, Land>) nachgeschlagen werden.

Leider handelt es sich um eine Karte, bei der Berge braun, Landschaften grün, usw eingezeichnet sind. Allerdings sind die Staatsgrenzen in einer einzigartigen Farbe, nämlich gold, gefärbt.

Es gibt einen Algorithmus dafür, schau mal hier:
>

Sehr schön! Damit klappt es! Allerdings etwas aufwendig.

Sprechen wir hier über eine Darstellung in Forms (die Wahl des Forums lässt dieses ja bereits vermuten )? Dann könnte dir GraphicPath weiterhelfen

Ja, wir sprechen von Darstellung in Forms und GraphicPath ist wirklich sehr nice! Beste Lösung! Damit werde ich arbeiten!

Danke an alle! 😉

06.06.2011 - 09:11 Uhr

Sagen wir ich habe eine Europakarte und will nun überprüfen ob sich die Mouseposition in Österreich befindet. Österreich hat aber keine Rechteckige Form. Dennoch würde ich gerne überprüfen ob sich die Mouseposition darin befindet.

Mir ist aber nur die Methode bekannt ein Rechteckiges Objekt abzufragen. Daher hatte ich folgende Idee. Ich lege mehrere Rechtecke in Österreich und frage ab ob eines dieser Rechtecke die Mouseposition enthält. Allerdings ist diese Methode entweder ungenau oder SEHR aufwendig.

Meine Frage ist nun ob es eine andere Möglichkeit gibt, einen solchen Bereich abzufragen.

11.04.2011 - 19:49 Uhr

In C# gibt es die Möglichkeit auf die Controls (labels, textboxen,...) mittels
this.controls["NameDesControls"] zuzugreifen.

Meine Frage: Gibt es eine ähnliche Anwendung um beispielsweise auf
booleans oder integer zuzugreifen?

Habe gegoogelt und im Forum gestöbert aber keine passende Antwort
gefunden, da es auch schwer war die Suchbegriffe passend zu wählen.

lg*