Bilder rotieren mit C# – Bitmap.RotateFlip vs.Graphics-Object

Auf der Suche nach einer Funktion zum Rotieren von Bildern in C# bin ich auf folgenden Beitrag auf dotnet-snippets.de gestoßen: Bilder rotieren mit C#.
Neben der eigentlich vorgestellten Methode wurden in den Kommentaren noch 2 andere Methoden vorgestellt und die Frage in den Raum geworfen, welche Methode davon die schnellste sei. Da dies auch mein Interesse weckte, habe ich kurzerhand eine kleine Test-Applikation geschrieben, die die verschiedenen vorgestellten Funktionen auf Herz und Nieren ihre Geschwindigkeit überprüfen sollte.
Nach einigen Testläufen wurde klar, dass die eigentliche Funktion nicht geeignet war, da in ihr jedes Mal ein neues Bitmap Objekt erstellt wurde, was Unmengen an Speicher frisst. Somit wurde folgende Funktion aus den Tests ausgeschlossen.

public Bitmap rotateImage(Bitmap bitmap, float angle)
{
Bitmap returnBitmap = new Bitmap(bitmap.Width, bitmap.Height);
Graphics graphics = Graphics.FromImage(returnBitmap);
graphics.TranslateTransform((float)bitmap.Width / 2, (float)bitmap.Height / 2);
graphics.RotateTransform(angle);
[…]

Dlls in Visual Studio C# Projekte einbinden

Prolog:
Gestern erhielt ich folgende Mail von Christoph.
hallo webmaster,
ich möchte gerne meine webcam
in meinem C#-Projekt einbinden (auf deiner Seite gut beschrieben)
Ich habe die dll’s runtergeladen und
nun weiß ich nicht wie ich sie
unter Microsoft Visual Studios 2008 einbinden kann
würde mich auf Antwort freuen
Mit freundlichen Grüßen Christoph
Für all jene, die noch nicht so lange dabei sind – Christoph bezieht sich auf folgenden Artikel. Aber nun zu seinem Problem. Wie bindet man Dlls im Visual Studio in ein laufendes Projekt ein?
Lösung:
Die Lösung des Problems liegt näher als manch einer von euch denken mag. Zuerst macht ihr einen Rechtsklick auf den Eintrag “Verweise” im Projektmappen-Explorer und klickt in dem sich öffnenden Kontextmenü auf “Verweis hinzufügen”. (Bild 1)
Nun geht ihr auf den Reiter “Durchsuchen”, wählt die gewünschten (.Net kompatiblen) Dlls aus und bestätigt eure Auswahl mit einem Klick auf den Ok-Button. (Bild 2)
Im letzten Schritt könnt ihr noch die entsprechenden Using-Direktiven in eurem Quellcode hinzufügen um […]

Benutzereingaben in C# speichern am Beispiel einer Textbox

Auf Wunsch eines Lesers gibt es heute mal eine Runde C# Basics. Nach dem ich ein kleines Snippet zum Umgang mit den AppSettings verbloggt hatte, wurde ich gefragt, wie man denn nun eigentlich mit Hilfe des Snippets Benutzereingaben abspeichern könnte. Gefragt, verbloggt. Hier kommt die Lösung.
Zur Verdeutlichung habe ich heute extra mal ein kleines C#-WinForms-Projekt im Visual Studio angelegt. Auf  das Form kommen jeweils ein Label und eine Textbox. Des Weiteren finden die oben schon erwähnten Funktionen zum Laden und Speichern von Werten in den AppSettings Verwendung.
WinForms Events - Laden und Speichern von Benutzereingaben in den AppSettingsWenn ihr das Projekt angelegt und die Controls hinzugefügt habt, sollte das ganze in etwa wie auf dem nebenstehenden Bild aussehen.
Als nächstes müsst ihr zwei EventHandler anlegen. Am einfachsten geht das über das “Ereignisse-Fenster”. (Das […]

Speichern von Einstellungen in C# mit AppSettings

Wie speichert man eigentlich schnell und einfach Einstellungen in C# Anwendungen? Diese Frage hat sich sicherlich jeder einmal in seiner C# Laufbahn gestellt und die Antwort ist so simpel. Am einfachsten geht es mit den AppSettings des ConfigurationManager im .Net-Frameworks.
Das .Net-Framework bringt nämlich gleich einen eigenen Manager zum verwalten und speichern von Einstellungen mit sich. Die Eigenschaften werden im gebräuchlichen XML-Format abgelegt. Und damit ihr seht, dass der Umgang mit den AppSettings wirklich ein Kinderspiel ist, habe ich euch zwei kleine Methoden zum Speichern/Ändern und Auslesen von Einstellungen geschrieben.

public string getAppSetting(string key)
{
//Laden der AppSettings
Configuration config = ConfigurationManager.OpenExeConfiguration(
System.Reflection.Assembly.GetExecutingAssembly().Location);
//Zurückgeben der dem Key zugehörigen Value
return config.AppSettings.Settings[key].Value;
}

public void setAppSetting(string key, […]

C# Random.Next(int, int) – obere und untere Grenze richtig setzen

Der Teufel ist ein Eichhorn, oder auch der Fehler liegt im Detail. Ich wollte gestern eine zufällige Zahlenreihe mit 0 und 1 erstellen. Das Visualstudio sagt mir hierzu nutze die Random.Next(int, int) Methode, wobei der erste Integer die untere Grenze und der zweite Integer die obere Grenze definiert. Nicht mehr und nicht weniger. Also müsste folgendes doch funktionieren:

Random rnd = new Random();
int zzahl = rnd.Next(0,1);

Falsch gedacht! So bekommt man nur eines – und zwar nur Nullen. Ein Blick in die MSDN Library sorgt für Aufklärung. Dort wird nämlich, im Gegenteil zum IntelliSense vom VisualStudio, erklärt, dass die untere Grenze inklusiv und die obere Grenze exklusiv ist.
Parameter
minValueTyp: System.Int32
Die inklusive untere Grenze der zurückgegebenen Zufallszahl.
 
maxValue
Typ: System.Int32Die exklusive obere Grenze der zurückgegebenen Zufallszahl. maxValue muss größer oder gleich minValue sein.

Im Klartext heißt das, dass der korrekte Aufruf um Nullen und Einsen zu generieren wie folgt aussehen müsste:

Random rnd = new Random();
int zzahl = rnd.Next(0,2);

Ich hoffe, ich konnte dem ein […]