ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
10894
10894
EMPFEHLEN
-
07.09.07 18:02 #1
- Registriert seit
- Aug 2005
- Beiträge
- 256
Hallo,
Versuche malwieder etwas zu zeichnen, und es ist immer noch so kompliziert wie vorher...
Diesmal soll im Quellcode ein Image/Bitmap Object oÄ. erzeugt werden, in welches ich dann einzelne Pixel zeichnen kann. Das Bild soll hinterher eine von mir bestimmte Auflösung haben und einfach als JPG oder BMP oder GIF gespeichert werden. Der Hintergrund soll weiß sein und die Punkte schwarz oder rot etc.
Sinn des Ganzen ist: Ich habe ein Zahlenarray mit 0en und 1sen. Dann gehe ich das Array durch und zeiche an jedem Punkt, an dem eine 1 ist, einen schwarzen Punkt in mein Image bzw. Bitmap Objekt. Jedoch soll das Ganze hinterher gespeichert werden, damit ich es einfacher skalieren kann. Sonst müsste ich das Bild ja jedes mal neu zeichnen, wenn sich die Anzeigegröße ändert. So arbeite ich immer mit der optimalen Größe (Breite = Array-Länge(0) ; Höhe = Array-Länge(1) da es ein 2-dimensionales Array ist)
Ich habe im moment das Problem, dass ich kein Bitmap Objekt erzeugen kann, weil VS meint, ich hätte der Variable keinen Wert zugeteilt, aber ich will ja ein neues Bild erzeugen, aber mit Dim Bild As New Bitmap funktioniert das nicht. Kennt sich da jemand aus?
Ich hoffe mir kann da jemand weiterhelfen.
DANKE!Geändert von Terminator2 (07.09.07 um 20:00 Uhr)
-
08.09.07 17:57 #2
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Hi.
Es gibt keinen parameterlosen Konstruktur von Bitmap.
Bitmap-Konstruktoren
Wennst dir die Liste ansiehst, wirst einen mit 2 Int Parametern entdecken, der ist genau richtig für dich. Diese Parameter geben Höhe und Breite an.
Mit der SetPixel Methode kannst dann deine Punkte setzen...
lg, AlexWith the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet. Hier gibts auch .net Support ^^
Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions
-
09.09.07 09:28 #3
- Registriert seit
- Aug 2005
- Beiträge
- 256
Hallo,
Perfekt. Jetzt klappt das mit New Bitmap(Width,Height) wirklich gut, und ich muss kein Bild mehr von der Festplatte öffnen.
Nur noch eine Frage:
Ich habe zur Verdeutlichung der Linien eine Linienstärke eingebaut. Das funktioniert wie folgt: Wenn ich einen Punkt zeichne und der Funktion die Linienstärke übermittle, zeichnet diese um den Punkt ein Quadrat mit der angegebenen Linienstärke als Kantenlänge, sodass ich die Punkte eben viel größer zeichne. Nur dauert das Ganze etwas lange. Bei Linienstärke = 5 Pixel ergibt das durchschnittlich 135.625 Bildpunkte. Gibt es Möglichkeiten das Zeichnen zu beschleunigen? Oder wäre es sinnvoll, erst ein Zahlenarray zu erzeugen, dort die Punkte alle einzutragen (Mit Linienstärke) sodass viele Pixel nicht doppelt gezeichnet werden? Oder dauert das dann genauso bis noch länger?
Edit: Habe das mit dem Array einfach mal ausprobiert. Das bringt eine irre Beschleunigung des Ganzen. Also falls jemand etwas ähnliches macht, einfach ein Zahlenarray erzeugen, welches dann den Farbcode als Zahl enthält. Man könnte auch ausprobieren ein Farbarray zu erzeugen, dann hätte man noch vielfältigere Möglichkeiten, werde das auch noch testen.
Danke für die Hilfe!
mfg
DavidGeändert von Terminator2 (09.09.07 um 12:43 Uhr)
-
09.09.07 12:44 #4
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Zum Beschleunigen des Zeichnens könntest dir mal den direkten Zugriff auf die Bitmapdaten ansehen:
Lost Column #2: Unsafe Image Processing (Lass dich nicht von unsafe abschrecken.
)
Statt dem eigenhändigen Setzen der Pixel könntest aber vorher auch noch das Zeichnen mittels der Graphics Klasse ansehen.
Dazu holst dir einfach über Graphics.FromImage ein Graphics Objekt, und benutzt dann von diesem die Zeichenmethoden.With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet. Hier gibts auch .net Support ^^
Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions
-
09.09.07 13:43 #5
- Registriert seit
- Aug 2005
- Beiträge
- 256
Hey,
Also das Unsafe Image Processing ist nicht so mein Ding. Das ist erstens in C# und zweitens auch kein großer Fortschritt gegenüber meinem Programm, weil das mittlerweile sehr schnell ist und daher nicht unbedingt solch eine Änderung erfordert.
Aber ich halte trotzdem mehr von dem Graphics Objekt, das ist mithilfe der GDI und funktioniert auch sehr gut. Aber da habe ich noch zwei Fragen:
1. Man muss die Prozeduren immer mit einem Paint Ereignis aufrufen. Aber wie soll ich das anstellen, wenn ich OOP arbeite? Ich habe Form_Load und dann rufe ich eine Private Sub LoadImage auf, aber da komme ich nicht mehr an "System.Windows.Forms.PaintEventArgs" Wie kann ich das anstellen?
2. Ich muss das Bild hinterher speichern, also als Datei, vorzugsweise JPEG. Wie kann ich das machen? Auf dem Bildschirm anzeigen geht ja, aber speichern?
Schon mal danke!
David
-
09.09.07 14:17 #6
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Bei der von mir angesprochenen FromImage Methode kannst du dir dein Graphics Objekt holen wann du willst! Das Paint-Event benötigst du, wenn du auf deiner Form (oder sonstigem GUI Element) zeichnen willst.
Wenn du also dein Bild erstellen und anschließend speichern willst, gehst du folgenderweise vor:
- Bitmap erstellen
- Graphics Objekt holen
- Zeichnen
- Graphics Objekt verwerfen (Dispose)
- Bitmap speichern (Save Methode)
With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet. Hier gibts auch .net Support ^^
Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions
-
09.09.07 16:44 #7
- Registriert seit
- Aug 2005
- Beiträge
- 256
Hey,
Hätte nicht gedacht, dass das doch so einfach geht. Dann verstehe ich endlich, warum VS immer dieses Grapics Objekt wollte, weil ich versehentlich immer auf den Bildschirm zeichnen wollte
Also vielen Dank!
Ich bin mir sicher, dass das Thema auch anderen Usern weiterhelfen wird!
Edit:
Da tut sich schon wieder eine neue Aufgabe auf: Ich habe gesehen, dass man GraphicPaths bilden kann. Da ich ja einzelne Punkte zeichne. Mittlerweile Ellipsen, und es wäre sehr gut, wenn ich diese miteinander verbinden könnte, und zwar immer zu der nächsten Ellipse mit dem geringsten Abstand oder nach Zeichenfolge, je nachdem was einfacher ist. Manchmal sind nämlich zu wenige Punkte vorhanden, sodass Lücken in der Kontur entstehen. Ist es möglich das zu realisieren? Sollte nicht allzuviel Rechenzeit verbrauchen, da der Vorgang schnell ablaufen soll, dauert sonst zu lange
mfgGeändert von Terminator2 (09.09.07 um 19:20 Uhr)
Ähnliche Themen
-
Text-Datei erstellen, speichern und wieder ausgeben
Von diaspora im Forum JavaAntworten: 11Letzter Beitrag: 04.07.07, 14:09 -
INI-Datei vom Code aus erstellen
Von DrMueller im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 20.09.06, 10:12 -
Bitmap speichern funktioniert nicht
Von Cecidi im Forum C/C++Antworten: 1Letzter Beitrag: 22.05.06, 17:27 -
Bild im Panel als Bitmap speichern
Von Octalus im Forum Delphi, Kylix, PascalAntworten: 6Letzter Beitrag: 22.05.04, 16:21 -
Blender: Speichern als Bitmap?
Von Nilman im Forum BlenderAntworten: 1Letzter Beitrag: 30.01.04, 20:47





Zitieren

Login





