|
You last visited: Today at 15:51
Advertisement
[C#][Hilfe]
Discussion on [C#][Hilfe] within the .NET Languages forum part of the Coders Den category.
01/28/2012, 23:49
|
#1
|
elite*gold: 0
Join Date: Mar 2010
Posts: 922
Received Thanks: 82
|
[C#][Hilfe]
Guten Abend,
ich wollte Fragen, ob mir jemand bei meinem Problem helfen könnte:
Ich möchte, dass auf ein bestimmten Bild (eg.bmp) ein Text (label1.Text) geschrieben wird, und anschließend als neue bitmap (eg_save.bmp) gespeichert wird. Leider Funktioniert das nicht so wie ich möchte.. deshalb bitte ich um Hilfe.
Hier mal mein Code
PHP Code:
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs pe) { 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();
}
}
Soweit tut er alles, bis auf dass er den Text mit in die neue Bitmap speichert. Ich kenne mich jetzt nicht soo gut mit C# aus, also vergibt mir, wenn es eigenzlich ganz simpel ist.
Wäre toll, wenn mir bei dem Problem jemand helfen könnte, da ich einfach nicht schlau daraus werde.
E: in einem anderen Forum hat einer Dies geschrieben:
Image-Objekt aus deinem Bild erstellen
Graphics-Objekt vom Image-Objekt erstellen
Graphics.DrawString verwenden
Graphics disposen
Image saven
Image disposen
den bisherigen Code habe ich dadurch und viel Google und dem Galileo-Computing C# Buch geschrieben..
mfg
Marcel
|
|
|
01/29/2012, 13:06
|
#2
|
Administrator
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,729
Received Thanks: 12,625
|
Dein ganzer Ansatz mit dem Paint Event ist etwas seltsam. Wenn du nur Bilder verändern möchtest, die du aus einer Datei lädst, ist das eigentlich unnötig. Stattdessen kannst du einfach das Bild laden, das dazugehörige Graphics Objekt instanziieren, mit diesem auf dem Bild zeichnen und das Bild im Anschluss speichern.
Das könnte dann in etwa so aussehen:
Code:
private bool DrawString()
{
string basePath = Application.StartupPath + "\\eg.bmp";
string savePath = Application.StartupPath + "\\eg_save.bmp";
SolidBrush pinsel = new SolidBrush(Color.Black);
Font f = new Font("Arial", 16);
Pen stift = new Pen(Color.Black, 2);
try
{
Image newImage = Image.FromFile(basePath);
Graphics g = Graphics.FromImage(newImage);
g.DrawString("Test", f, pinsel, 10, 10);
newImage.Save(savePath);
return true;
} catch(Exception) {}
return false;
}
|
|
|
01/29/2012, 16:04
|
#3
|
elite*gold: 0
Join Date: Mar 2010
Posts: 922
Received Thanks: 82
|
Vielen Dank für deine antwort. Ich habs jetzt hinbekommen:
PHP Code:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Drawing.Printing; using System.Drawing.Imaging; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private bool DrawString() { string basePath = Application.StartupPath + "\\eg.bmp"; string savePath = Application.StartupPath + "\\eg_save.bmp"; SolidBrush pinsel = new SolidBrush(Color.Black); Font f = new Font("Arial", 16); Pen stift = new Pen(Color.Black, 2); // Create image. Image imageFile = Image.FromFile("eg.bmp"); imageFile.Save("eg.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); Image newImage = Image.FromFile("eg.jpg"); // Create graphics object for alteration. Graphics newGraphics = Graphics.FromImage(newImage); newGraphics.DrawString(label1.Text, f, pinsel, label1.Location.X, label1.Location.Y); newImage.Save(savePath, ImageFormat.Bmp); return true; } private void Form1_Load(object sender, EventArgs e) { DrawString(); } } }
|
|
|
01/29/2012, 16:34
|
#4
|
Administrator
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,729
Received Thanks: 12,625
|
Zwei Anmerkungen dazu: - Ein konstanter Rückgabewert (hier: true) macht keinen Sinn. Wenn du das so umsetzt, sollte die Funktion void zurückgeben.
- Du brauchst dein Bild nicht erst als JPEG speichern und dann laden. Mit der Image Klasse hast du ja schon eine abstrakte, recht generische Klasse an der Hand, somit reicht es wenn du dir per Image.FromFile() ein Image Objekt instanziierst, dieses dann veränderst und einfach beim Speichern das gewünschte Format festlegst, sprich:
Code:
newImage.Save(savePath, ImageFormat.Jpeg);
|
|
|
01/29/2012, 16:48
|
#5
|
elite*gold: 0
Join Date: Mar 2010
Posts: 922
Received Thanks: 82
|
Okay, danke. Ich habs einfach mal so gelassen, da es so Funktioniert hat
Ich glaube, man kann den Thread nun closen, da die Frage beantwortet wurde.
Nochmals vielen Dank!
mfg
|
|
|
Similar Threads
|
Metin2 Multihack by xKeinjalx l Hilfe l Hilfe l Hilfe Pleasy
03/18/2012 - Metin2 Private Server - 2 Replies
Hallo Elit(epvp)ers Mitglieder.
Ich habe Multihack von xkEinjalx herunter geladet.
Der Problem ist bei Metin2 Patcher.
Wenn Man Metin2 mit Patcher öffnet kann man nicht .dll Injecten!
Man Musst also mit Metin2client.bin in Metin2client.exe unbennen und öffnen.
Es kommt Metin2 Fenster, dann funkt es schon, aber es verbindet nicht zu Server.Es bleibt bei Du wirst mit dem Server verbunden stecken aber wenn man mit Metin2 Patcher öffnet es Loggt ein nur der Hackt geht dann nicht.
Der Link...
|
All times are GMT +2. The time now is 15:51.
|
|