Und ich selber versuche so wenig wie möglich Global zu setzen, alles was man nur Lokal braucht, gehört für mich nur in einen Lokalen Kontext.
Da würde ich definitiv wiedersprechen. Konstanten gehören niemals lokal. Außerdem sollte GDIPlus beim Programmstart gestartet und beim beenden geschlossen werden, wenn die Funktionen öfter benutzt werden. Es erzeugt performance mäßig einfach viel zu viel overhead, ständig zu laden und wieder freizugeben.
Ich würde immer die Performance als erstes sehen, weil das vom Nutzer am ehesten bemerkt wird. Dann den Speicherverbrauch. Ist heutzutage nicht mehr ein ganz so großes Problem, deshalb wirds nicht allzu schnell auffallen. Und später kommt irgendwann Stil, also wenn möglich lokal,... (Natürlich alles im Rahmen, wenn es nicht anders geht muss man kompromisse eingehen.) Wenn es zu viele Globale Variablen werden, sodass es unübersichtlich wird, muss man halt auf mehrere Scripte aufteilen.
Lokal gehören nur alle temporären Variablen, die nur während eines Funktionsdurchlaufes verwendet werden. Bei denen macht es keinen Sinn, sie Global anzulegen.
Hier wüde ich sagen hängt es davon ab, wie oft das Wallpaper geändert werden soll. Wenn es manuell hin und wieder gewechselt wird würde für mich der Speicher evtl. wichtiger sein, weils eh nur alle paar Tage aufgerufen wird => Performance ist weniger wichtig (sollte aber auch nicht wenige Sekunden überschreiten). => Lokal anlegen und wieder freigeben.
Wenn es automatisch alle X Sekunden/Minuten wechselt sollte für Performance optimiert werden. => Global anlegen
Wobei ich vmtl. hier einfach nur auf Performance gehen würde und eher Global allokieren würde, weil der Speicherverbrauch so gering ist, dass er nicht ins gewicht fällt. Bei GBs an RAM sind nen paar KB egal.