Autor |
Beitrag |
BleachRukia
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 26.06.11 19:17
Hallo Leute,
suche schon seit sehr langer Zeit einen Weg um ein Image zuzuschneiden, habe auch im Netz dazu einen tollen Code gefunden gehabt:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| Bitmap source; private void button1_Click(object sender, EventArgs e) { OpenFileDialog o = new OpenFileDialog();
if (o.ShowDialog() == DialogResult.OK) { source = new Bitmap(o.FileName); pictureBox1.Image = source; } }
private void Left_Right_Up_Down_numericUpDowns_ValueChanged(object sender, EventArgs e) { if (pictureBox1.Image != null) { pictureBox1.Image = CropBitmap(source, 0, 0, source.Width - (int)Left.Value, source.Height - (int)Up.Value); } }
public Bitmap CropBitmap(Bitmap bitmap, int cropX, int cropY, int cropWidth, int cropHeight) { Rectangle rect = new Rectangle(cropX, cropY, cropWidth, cropHeight); Bitmap cropped = bitmap.Clone(rect, bitmap.PixelFormat); return cropped; } |
nur leider schneidet dieser Code immer zwei Seiten, also entweder links und rechts oder oben und unten, weiß Jemand wie ich es schreiben muss das ich auswählen kann das das Programm immer nur eine Seite schneidet ?
Liebe Grüße BleachRukia
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 26.06.11 19:27
Irgendwie verstehe ich die Frage nicht, aber über die Parameter bei CropBitmap wählst Du Dir auch aus, welches Rechteck vom Bitmap übrig bleiben soll. Da hast Du doch alle Freiheiten 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
BleachRukia
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 26.06.11 19:42
Hallo,
was genau an meiner Frage verstehst du nicht ?
Ich konnte jetzt nur aus dem Code heraus erkennen das ich angeben kann das ich entweder nur die Breite oder die Höhe schneiden kann, habe aber leider nichts gefunden wo ich genau sagen kann schneide mir jetzt nur die Linke Seite oder die Rechte des Bildes etc.
Liebe Grüße BleachRukia
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 26.06.11 19:47
Du kannst über die Parameter von CropBitmap genau sagen, was geschnitten werden soll. Von dem Rechteck, was vom Bild übrig bleiben soll, gibst Du die obere, linke Ecke an und dann die Länge und Breite.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
BleachRukia
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 26.06.11 19:53
Hallo,
wen ich versuche cropX oder cropyY einen anderen Wert als 0 zu geben bekomme ich die Fehlermeldung das nicht genügend Speicher vorhanden ist, und dann bleiben ja nur noch cropWidth und cropHeight übrig aber diese ändern immer nur beide Seiten  oder habe ich dich jetzt falsch verstanden ?
Kannst du mir mal ein Code Beispiel geben, Theorie ist nicht meine Stärke
Liebe Grüße BleachRukia
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 26.06.11 20:13
Einloggen, um Attachments anzusehen!
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Für diesen Beitrag haben gedankt: Kha
|
|
BleachRukia
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 26.06.11 21:35
Hallo,
aber wenn cropX und cropY nur für die Position des Bildes stehen wie kann ich dann mit ihnen ein Bild an allen Seiten schneiden ?
Liebe Grüße BleachRukia
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 26.06.11 21:41
In dem Du cropWidth und cropHeight entsprechend setzt. Wenn Du links und rechts und oben und unten 10 Pixel wegschneiden willst, ist - cropX und cropY = 10 Pixel
- cropWidth und cropHeight = Höhe/Breite des Bildes - 20 Pixel
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
BleachRukia
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 26.06.11 21:48
Hallo,
wieso sind es bei cropWidth und cropHeight nicht auch 10 Pixel ?
Habe jetzt mal einen Test gemacht, wenn ich erst cropWidth auf 10 stelle und danach cropX dann kommt keine Fehlermeldung, dann schneidet das Programm richtig  , oder mache ich da jetzt etwas falsch !?
Liebe Grüße BleachRukia
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 26.06.11 21:55
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
BleachRukia
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 26.06.11 22:58
Hallo,
ich glaube ich habe es jetzt gelöst
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| private void Schneiden_ValueChanged(object sender, EventArgs e) { ImageInput = new Bitmap(pictureBox1.ImageLocation); pictureBox1.Image = ImageCut(ImageInput, (int)Left.Value, (int)Up.Value, (int)Right.Value + (int)Left.Value, (int)Down.Value + (int)Up.Value); }
public Bitmap ImageCut(Bitmap bitmap, int xPosition, int yPosition, int Width, int Heigth) { Rectangle Rechteck = new Rectangle(xPosition, yPosition, ImageInput.Width - Width, ImageInput.Height - Heigth); Bitmap Output = bitmap.Clone(Rechteck, bitmap.PixelFormat); return Output; } |
Ich habe es jetzt so gemacht das ich immer wenn xPosition oder yPosition verändert wird, immer der Wert zur Width oder Heigth dazu addiert wird, auf den ersten Blick sieht es so aus als würde jetzt alles richtig funktionieren und schneiden
Ist dieser Code hier so korrekt oder habe ich etwas falsch gemacht ?
Liebe Grüße BleachRukia
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 26.06.11 23:03
Ja, schaut gut aus 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
BleachRukia
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 26.06.11 23:11
Hallo,
lustig, meine Lösung war jetzt einfach nur geraten, ich hatte nähmlich gemerkt gehabt das ich erst links und unten Schneiden kann wenn ich rechts und oben schon etwas stehen habe, sozusagen der MinWert.
Lustig das das jetzt auch noch wirklich funktioniert hat
Aber ohne deine Tipps wäre ich da niemals drauf gekommen, vielen vielen dank
Liebe Grüße BleachRukia
|
|