Autor |
Beitrag |
F34r0fTh3D4rk
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mo 24.04.06 15:32
Hallo (mein erster Thread hier im c# Forum ^^)
Naja, ich hab mich erstmal mit der Syntax von c# auseinandergesetzt, die ich einigermaßen verstehe, hab auch schon einen text in einem label ausgeben können, diverse sachen berechnen usw, jetzt sollte es aber daran gehen, ein bild in eine pictureBox zu laden, ich habs mit
C#-Quelltext 1:
| pictureBox1.Image.FromFile("test.bmp"); |
versucht, das schlug aber leider fehl
benutzen tue ich delphi2005 und das ist eine c# windows anwendung (hab noch net gefunden dass da wo steht dass man c# für .net verwenden kann, da steht nur was von asp.net, bei delphi steht aber delphi für .net, komisch ^^)
naja irgendwie möchte ich da ein bild reinladen, und weiterführend wäre noch schön wenn ich das vorher in ein temporäres bild laden kann, damit ich nicht immer auf die datei zugreifen muss, ich brauch das nämlich öfter
danke schonmal
|
|
Kha
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mo 24.04.06 18:52
F34r0fTh3D4rk hat folgendes geschrieben: | Hallo (mein erster Thread hier im c# Forum ^^)
Naja, ich hab mich erstmal mit der Syntax von c# auseinandergesetzt, die ich einigermaßen verstehe, hab auch schon einen text in einem label ausgeben können, diverse sachen berechnen usw, jetzt sollte es aber daran gehen, ein bild in eine pictureBox zu laden, ich habs mit
C#-Quelltext 1:
| pictureBox1.Image.FromFile("test.bmp"); |
versucht, das schlug aber leider fehl |
FromFile ist eine statische Methode.
C#-Quelltext 1:
| pictureBox1.Image = Image.FromFile("test.bmp"); |
F34r0fTh3D4rk hat folgendes geschrieben: | benutzen tue ich delphi2005 und das ist eine c# windows anwendung (hab noch net gefunden dass da wo steht dass man c# für .net verwenden kann, da steht nur was von asp.net, bei delphi steht aber delphi für .net, komisch ^^) |
Da C# eine reine .Net-Sprache ist, ist das auch so eindeutig .
F34r0fTh3D4rk hat folgendes geschrieben: | naja irgendwie möchte ich da ein bild reinladen, und weiterführend wäre noch schön wenn ich das vorher in ein temporäres bild laden kann, damit ich nicht immer auf die datei zugreifen muss, ich brauch das nämlich öfter |
Mit obigem Code wird ja eine neue Image-Instanz erstellt, diese kannst du zwischenspeichern und dann erst auf die PictureBox übertragen. Wobei du dann noch Image durch Bitmap ersetzen kannst, bietet ein paar Member mehr.
|
|
F34r0fTh3D4rk
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mo 24.04.06 19:15
relative pfade scheint er nicht zu mögen, aber so gehts:
C#-Quelltext 1:
| pictureBox1.Image = Image.FromFile("l:\\downloads\\bla.bmp"); |
und wie deklariere ich ein temporäres und wie muss ich das freigeben, oder ist da ein garbage collector der mir das abnimmt ?
|
|
Kha
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mo 24.04.06 20:39
F34r0fTh3D4rk hat folgendes geschrieben: | und wie deklariere ich ein temporäres und wie muss ich das freigeben, oder ist da ein garbage collector der mir das abnimmt ? |
Jain . Die Instanz wird vom CLR-GC freigegeben, allerdings enthält ein Bitmap native Resourcen (HBITMAP), die du möglichst bald wieder mit Dispose freigeben solltest.
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: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| public partial class Form1 : Form { Bitmap source;
public Form1() { InitializeComponent(); source = new Bitmap(100, 100);
using (Graphics g = Graphics.FromImage(source)) g.FillRectangle(Brushes.Blue, 10, 20, 50, 50);
pictureBox1.Image = new Bitmap(source); }
private void AlterImageButton_Click(object sender, EventArgs e) { using (Graphics g = Graphics.FromImage(pictureBox1.Image)) g.FillPie(Brushes.Red, 0, 0, 50, 50, 0, 45); pictureBox1.Refresh(); }
private void ResetImageButton_Click(object sender, EventArgs e) { using (Graphics g = Graphics.FromImage(pictureBox1.Image)) g.DrawImage(source, 0, 0); pictureBox1.Refresh(); } } |
|
|
|