Laden...

Grafik aus Zahlenkollonen

Erstellt von ec-hasslau.de vor 18 Jahren Letzter Beitrag vor 18 Jahren 4.803 Views
ec-hasslau.de Themenstarter:in
69 Beiträge seit 2005
vor 18 Jahren
Grafik aus Zahlenkollonen

Hallo Leutz!

Ich würde gern einen Zahlenkollone von Nullen und Einsen in eine Grafik "umwandeln".
In etwa so:
01000010101
wir zu --> [ ] ist je ein Pixel - entweder ausgemalt oder leer:
[ ][X][ ][ ][ ][ ][X][ ][X][ ][X]

Wie kann man das machen?
Die Daten hätte ich als Array und als String zur Verfügung - ist mir gleich wie das verwendet wird...

Danke schon im Voraus,
ec-hasslau.de

B
342 Beiträge seit 2006
vor 18 Jahren

Hi,
das kannst du mit Bitmap.SetPixel(...) machen.
Die Bitmap muss nur eben die richtige Größe haben,
sonst bleibt ein Teil weiß.
Greetz
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

ec-hasslau.de Themenstarter:in
69 Beiträge seit 2005
vor 18 Jahren

Danke für die schnelle Antwort!

Wie mach ich damit "Multiline" und in welchem Variablentyp speicher ich die (bzw. wie bekomm ich das als Icon in eine Liste)?

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo ec-hasslau.de,

ich verstehe deine Fragen leider nicht. Was ist "Multiline"? Und was für Datentypen? Ich dachte aus String (bzw. Array) eine Bitmap machen; also genau die beiden Typen. Und wo kommt plötzlich Icon ins Spiel bzw. welche Liste?

herbivore

B
342 Beiträge seit 2006
vor 18 Jahren

Ähh, wenn du mit Variable die Bitmap meinst:
Bitmap mybitmap = Bitmap.FromFile/FromStream....
Was meinst du mit "Multiline"?
Das setzen der Pixel:
foreach(char c in mystring.ToCharArray())
{
mybitmap.SetPixel(X, Y, Farbe);
}
Das ganze irgendwie in zwei Schleifen packen, damit jede Koordinate mit einer Farbe besetzt wird.
Hoffe das hilft dir weiter,
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

ec-hasslau.de Themenstarter:in
69 Beiträge seit 2005
vor 18 Jahren

Gut, jetzt wird mir das klar... habs hinbekommen!

Jetzt würde ich gern noch gern einbauen, dass man diese Symbole irgendwie bearbeiten kann - also, nur Schwarz oder Weiß malen.
Da die einzelnen Bitmaps aber nur rund 6x8 Pixel sind würde ich diese gern irgendwie "zoomen" - in etwa so wie bei Paint mit 800% Vergrößerung.

Geht die mit dem normalen Bitmap-Control zu bewältigen?

*UPDATE*
Ich hab auch noch ein Problem mit der ImageList. Das Programm soll auch irgendwann unterschiedlich große Icons lesen können. Das geht auch so weit, aber wenn ich versuch über den Code die Höhe und Breite der ImageList zu ändern sagt der mir, dass dies schreibgeschützt ist.

B
342 Beiträge seit 2006
vor 18 Jahren

Also für das Malen könnte dir vielleicht Freihand malen helfen.
Für den Zoom fällt mir jetzt leider nix ein, außer, dass du einfach, wenn das Bild überhaupt in einer PictureBox ist, diese vergrößerst und eben diese komische Eigenschaft (hab vergessen wie die heisst) die sagt, wie das Bild angezeigt wird, auf Zoom stellst.
ImageList:
Bin noch Noob, hab das noch nie verwendet und weiß auch gar nicht so genau, wofür die da ist 😁

Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

ec-hasslau.de Themenstarter:in
69 Beiträge seit 2005
vor 18 Jahren

Ohhh, jetzt gibt's auch mal was wo ich mich fetzten lassen kann... 😁

Also ImageList ist dafür da, dass wie der Name sagt du eine Liste hast wo du jede Menge Bilder reinmachen kannst. Bei ListBoxen kannst du dann beispielsweise die ImageList auswählen, dann brauchst du bei jedem neuen Eintrag jeweils nur den Index des Bildes in der ImageList angeben und hast gleich ein Bild in die ListBox eingebunden...

Aber so ein Noob scheinst du net zu sein... 😉

B
342 Beiträge seit 2006
vor 18 Jahren

Vielen Dank für die Erklärung und das Lob 😁 😁
Funzt jetzt alles??
Wofür brauchst du das Icon-Zeugs denn?
Nen eigener Editor???
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

ec-hasslau.de Themenstarter:in
69 Beiträge seit 2005
vor 18 Jahren

Kein Problem! Immer wieder gern! Wenn de mal Mangel hast sag bescheid! 😉

Hmmm, das mit dem "Zoom" geht schon, sieht aber ziehmlich bescheiden aus...
Ich würde mich schon noch für eine andere Variante interessieren!
Außerdem kann man doch in der PictureBox auch nix bearbeiten, oder?

Wofür ich das brauch:
Ich weiß ja nicht wie's um deine PHP-Kenntnisse aussieht...
Auf alle Fälle kann man mit PHP Diagramme zeichnen und da kann man Schriften einbinden, welche aber in den Standardversionen kein €-Zeichen beinhalten. Man kann aber auch zusätzliche Schriften hinzufügen. Diese sind im gdf-Format gespeichert. Rein technisch kann man die auch mit'm HexEditor bearbeiten, was sich aber etwas Vorstellung erfordert, woran's manchmal mangelt.

Das Format ist in etwa so aufgebaut:
Byte-Position C Daten-Typ Beschreibung
Byte 0-3 int Anzahl der Zeichen des Font
Byte 4-7 int Wert des ersten Zeichens des Fonts (meist 32 für Leerzeichen)
Byte 8-11 int Pixel-Breite jedes Zeichens
Byte 12-15 int Pixel-Höhe jedes Zeichens
Byte 16- Zeichen Zeichen-Daten als Array, ein Byte je Pixel für jedes Zeichen; in der Summe also (Anzahl-Zeichen * Breite * Höhe)-Bytes.

*UPDATE*
Wenn mir nix anderes Einfällt mach ich glaub ich das alles über die benötigte Anzahl TextBoxen, wo ich die Hintergrundfarbe änder... 😁

B
342 Beiträge seit 2006
vor 18 Jahren

Da ich mit meinem "Programmier-PC" nicht ins Inet komme, hab ich mich noch nie mit PHP, ASP o.ä. beschäftigt. Würd mich zwar interessieren, aber was soll man machen?
Nen Kabel zwei Stockwerke hoch in mein Zimmer legen???
Das mit der Schrift hab ich glaub ich aber trotzdem verstanden 😁
In der PictureBox kann man übrigens glaub ich so nix bearbeiten, aber du kannst ja das Click-Event abfangen und dann auf den Mauskoordinaten der PicBox zeichnen (glaub ich).
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

ec-hasslau.de Themenstarter:in
69 Beiträge seit 2005
vor 18 Jahren

Gut, ich hab es jetzt echt mit TextBoxen gemacht - funktioniert wunderbar 😄.
Sieht aber schon bisschen komisch aus...

Ich hätte aber gern noch einen "Container" wo ich die ganzen TextBoxen für jeden Pixel reinmach, der sich, wenn es zu viele werden scrollen lässt - ohne dass ich das erst über Quelltext umständlich hinzu programmieren muss. Gibt es da irgendwas?

Gruß, ec-hasslau.de

ec-hasslau.de Themenstarter:in
69 Beiträge seit 2005
vor 18 Jahren

Gut, habs selber gefunden...
Es dauert ganz schön lange so 200 TextBoxen zu erstellen 😉
Gibts keine schnellere Alternative - sprich ein richtiges Control zum Malen?

B
342 Beiträge seit 2006
vor 18 Jahren

Also ich würds mal so wie oben beschrieben probieren:
Das OnClickEvent der PictureBox abfangen und dann den Pixel, über dem die Maus gerade ist, anmalen. Die Koordinaten kriegst du glaub ich irgendwie mit
myPicBox.MousePosition oder so. Auf jeden Fall gibts ne Möglichkeit.
Wenn du bisschen bewandert bist kannst du dir auch selbst nen Control proggen, oder es gibt irgendwo so eins.
Paint.NET ist OpenSource, kannst da ja mal gucken, was fürn Control die haben.
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

ec-hasslau.de Themenstarter:in
69 Beiträge seit 2005
vor 18 Jahren

ICh glaub mich erst bei Paint.NET reinfitzen ist mir zu viel Arbeit.
PictureBox ist aber wieder doof, weil kein "Zoom"...

B
342 Beiträge seit 2006
vor 18 Jahren

Hasste schonmal auf www.codeproject.com geguckt?
Da gibts eigentlich fast alles 😁

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

1.549 Beiträge seit 2004
vor 18 Jahren

nim doch einfach ein Panel auf das du dann zeichen kannst

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

B
342 Beiträge seit 2006
vor 18 Jahren

Kann man ein Panel denn zoomen 🤔

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

1.271 Beiträge seit 2005
vor 18 Jahren

Man kann eine Graphics-Objekt zoomen (entweder 'Transform' eine Zoom-Matrix zuweisen oder 'ScaleTransoform(...)' hernehmen). Das machst du einfach vorm zeichnen mit dem gewünschten Wert.

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

ec-hasslau.de Themenstarter:in
69 Beiträge seit 2005
vor 18 Jahren

Hast du dazu irgend ein Tutorial? So sagt mir das recht wenig...
Kann man dann auch in dem Zoom-Modus mit dem "gezoomten Pinsel" zeichnen. Also, ich mein, zoomt der auch wirklich oder macht der nur das Bild einfach um einen gewissen Faktor größer, der Pinsel bleibt aber klein.

B
342 Beiträge seit 2006
vor 18 Jahren

Also:
Du erzeugst mit


Graphics mygraphics = Graphics.FromImage(myBitmap);

nen Graphics-Objekt.
Dann einen "Stift":


Pen pen = new Pen(1, Color.Red);

Dann kannst du z.B. so zeichnen:


mygraphics.DrawRectangle(pen, 2, 2, 6, 6);

Wie das mit dem Zoom geht weiß ich leider auch nicht.
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

1.271 Beiträge seit 2005
vor 18 Jahren

@ec-hasslau.de: Ja, Pens und alles was du zeichnest werden mitgezommt. Als Tutorial, kann ich dir wenn dann eine Einführung in GDI+ oder so empfehlen. Da gibt es diverse Webcasts, oder z.B. ein recht schönen Einstieg in C#, in dem auch GDI+ gut behandelt wird, von der Universität Trier.

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

B
342 Beiträge seit 2006
vor 18 Jahren

Da erreicht mich doch der Codeproject-Newsletter, und drin ist ein Link
hierzu 😁 😁 😁
Hoffe du kannst das gebrauchen.
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.