Guten Tag liebe Programmierer und Programmiererinnen,
ich suche nach einer Lösung für ein Problem.
Wir sollen einen Schulplan (mit Klassenzimmern, etc) erstellen. Dieser sollte veränderbar (jedes Jahr sind andere Klassen in den Zimmern) und natürlich ausdruckbar sein. Meine Idee war es nun, ein Programm zu schreiben, mit einem Grundriss der Schule und Klassenzimmern als Hintergrund. In den leeren Feldern der Klassenzimmern möchte ich Textboxen platzieren, auf denen die Klassen und Zimmernummern draufstehen.
Nun meine Frage:
Ist es irgendwie möglich, dass dann beim Drucken der Text in den Textboxen auf dem Bild automatisch mit ausgedruckt wird? Also dass nicht einfach das Bild des Grundrisses ausgedruckt wird, sondern der Text sozusagen mit auf das Bild geschrieben wird. Ich bin auch gerne für andere Vorschläge offen.
Falls dies der falsche Bereich ist, bitte ich um verzeihung. Ich bin neu hier in dem Forum und kenne mich noch nicht so gut aus. 😃
Schonmal vielen Dank im vorraus,
mfg
Thread verschoben
richtiger Bereich wäre Grafik und Sound.
Das ist recht simpel:
Image-Objekt aus deinem Bild erstellen
Graphics-Objekt vom Image-Objekt erstellen
Graphics.DrawString verwenden (MSDN Graphics.DrawString)
Graphics disposen
Image saven
Image disposen
edit:
bzw., um das Disposen nicht selbst vornehmen zu müssen, mit using arbeiten!
edit2:
Ich hab noch ne Seite rausgesucht, auf der das recht gut (wie ich finde) erklärt ist:
switchonthecode.com - How to draw text on image
Mal doch einfach das ganze Form in ein Bitmap und druck dieses aus.
Hier ein Beispiel, welches ich gerade auf die Schnelle bei google gefunden habe
Einen Screenshot mit C# machen
"It is not wise to be wise" - Sun Tzu
Mal doch einfach das ganze Form in ein Bitmap und druck dieses aus.
Die URL trifft ziemlich genau, was das ist: Gefrickel.
Siehe besser [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox)
Was ist daran Gefrickel ? Das ist ein 3-Zeiler bei der der Aufruf einer Methode der Form-Klasse demonstriert wird. M$ frickelt ja oft und gerne, aber das hier finde ich noch ganz simpel realisiert.
"It is not wise to be wise" - Sun Tzu
Was ist daran Gefrickel
Ein Screenshot einer Form zu erstellen, um ein Bild mit Text auszudrucken.
Sieht dann z.B. so aus wie im Anhang (Für einen User, der ein Netbook mit einem kleinen Bildschirm verwendet).
Und Dinge wie unterschiedliche DPI-Werte, evtl. vorhandene Eingabehilfen wie Hochkontrastmodus, unterschiedliche Window Designs, beschränkte Farbtiefe, evtl. vorhandene Tools, die Textboxen erweitern, etc. sind da noch gar nicht berücksichtigt.
Guten Abend,
die Antworten haben mich schonmal etwas weiter gebracht, jedoch Fehlt noch das entscheidende: Das Speichern. Dies macht er einfach nicht.. und ich weiß auch nicht warum.
Hier mal mein bisheriger Code:
{
Graphics g = pe.Graphics;
string filename = Application.StartupPath + "\\eg.bmp";
SolidBrush pinsel = new SolidBrush(Color.Black);
string myBitmap = Application.StartupPath + "\\eg.bmp";
Image newImage = Image.FromFile(myBitmap);
Font f = new Font("Arial", 16);
Pen stift = new Pen(Color.Black, 2);
string path = Application.StartupPath + "\\eg_save.bmp";
if (File.Exists(filename))
{
g.DrawImage(newImage, 0, 0);
g.DrawString(label1.Text, f, pinsel, label1.Location.X, label1.Location.Y);
label1.Visible = false;
if (File.Exists(path))
{
File.Delete(path);
newImage.Save(path, ImageFormat.Bmp);
}
else
{
newImage.Save(path, ImageFormat.Bmp);
}
g.Dispose();
}
}
Ich hoffe, ihr könnt mir dabei helfen.
Mfg
Marcel
Hallo Goramir,
du zeichnest ja nur auf den Schirm, nicht in das Bild. Der Text ist also gar nicht erst in newImage enthalten. Schau noch mal oben. Karill Endusa hat beschrieben wie es geht. Der springende fehlende Punkt ist Graphics.FromImage und dessen Verwendung bei DrawString.
BTW: In Application.StartupPath solltest du nichts speichern. Wenn das Programm normal unter X:\Programme installiert ist, bestehen standardmäßig keine Schreibrechte.
herbivore