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
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.
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)?
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
Ä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.
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.
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.
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... 😉
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.
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... 😁
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.
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
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?
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.
ICh glaub mich erst bei Paint.NET reinfitzen ist mir zu viel Arbeit.
PictureBox ist aber wieder doof, weil kein "Zoom"...
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.
nim doch einfach ein Panel auf das du dann zeichen kannst
Wir Arbeiten eigendlich nicht wir nehmen nur das geld
Kann man ein Panel denn zoomen 🤔
Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.
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.
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.
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.
@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.