Hi,
ich probiere mich gerade erstmals an C#, eine alte Version 2010.
Ich habe mir die VS2010ImageLibrary nachträglich entpackt und versuche
nun damit klar zu kommen. Aber ich finde irgend wie kein Hilfe.....
Bei MSN geht das irgend wann ins leere.... :-(
Ich hab hier ein PNG das mehrere Bilder(Icons) enthält und weiß nicht
wie ich an die einzelnen Bilder komme. Da mir die Größen-infos fehlen,
kann ich nicht einfach cut 20, 20 machen!!!!
Unter C++ hatte ich mal eine Vorlage, wo ich die Größen kannte, war kein
Problem, auch eine Vorlage mit einem Rahmen um die einzelnen Pics,
konnte ich in C++ verarbeiten(Rahmen Pixel suchen).
Aber hier weiß ich einfach nicht weiter!?!
(Fehlendes Wissen von C#!)
Ich Hänge mal ein PNG an, vielleicht kann mir einer einen Hinweis geben.
Link wäre Ok. :-)
Stephan schrieb:> Da mir die Größen-infos fehlen,> kann ich nicht einfach cut 20, 20 machen!!!!
Fehlen dir die Koordinaten der Einzelbilder im gezeigten Bild oder
verstehst du nicht, wie du mit C# einen Bildausschnitt kopierst? Mir ist
dein Problem noch nicht ganz klar.
Ahh noch was:
An meine Installation sind scheinbar Sachen schief gelaufen, denn ich
hab kein Namespace "System.Windows.Controls" wie kann man das
reparieren?
ich nutze ".NET Framework 4"!
"System.Windows.Shapes" habe ich auch nicht!!!
Kann mir jemand erklären wie man die hilfe von
"https://msdn.microsoft.com/de-de/library/" richtig benutzt???!!!!!
Das ich das Framework 4 einstellen muß, weiß ich schon :-)
(sonst kommt 4.5 oder 4.6)
Aber trotz der Version 4, stehen dort Sachen die ich nicht nutzen kann.
Ist die Version 2010 nicht mehr so gut für einen Anfänger?
(wollte noch C++ in der Hinterhand haben, gibs bei den neueren Versionen
nicht mehr!)
Sind alle Bilder so Multiple aufgebaut oder sind das zig verschiedene
Verwürfelungen?
Komischerweise sind die Bilder Oberkanten ungefähr 49-50px voneinander
entfernt.. wenn Du von oben mit 49px anfängst landet jedes Bild in der
Mitte.
Liegt das Problem ggf. etwas tiefer?
Was willst du eigentlich mit den Bildern machen? Sind die für dein User
Interface?
Falls ja, machst du dir das leben unnötig schwer ;-)
Ach ja:
Nutzt du Winforms, WPF oder Silverlight?
Hallo
@Philipp K.
Also alles durch einander, leider.
@Boris P.
Wie gesagt, hab gestern mit ca. 12 Stunden mit C# angefangen.
(bis 2.30 Uhr) Aber ich komme gar nicht auf einen grünen Zweig.
Ich wollte paar Bilder(Icons) für meine Anwendung haben und fand das.
(VS2010ImageLibrary) hab mir auch die VS2012ImageLibrary +
VS2013ImageLibrary
vom Windows-Download Server geholt, mal sehen was darin ist. War gestern
schon zu spät.
Wie gehts einfacher?
Also ich benutze "Windows Forms Appl.", scheint ähnlich zum VC++ 6 von
Borland zu sein. (darin war ich mal sehr gut)
Was ist stand der Dinge? WPF?
(Hier mein Test PC hat noch XP drauf! <- muß auch bleiben)
Wegen den Bildern, kann ich hier auch die Pixel durchsuchen nach !=
TranparentColor oder so????
Aaaalso:
Kannst ruhig WinForms nehmen, das ist erst mal einfacher als WPF.
Aber mit solchen komischen Grafiken musst du dich nicht rumärgern ;-)
Üblicherweise sind die UI Grafiken einfache, kleine PNGs, die direkt die
richtige Größe haben. Da muss dann nichts mehr durchsucht/ausgeschnitten
werden. In der VS2013 Image Library findest du davon reichlich (Beispiel
siehe oben). Wenn dir der Grafikstil nicht gefällt, kannst du natürlich
auch eine der älternen VS Image Libraries nehmen...
Die kannst du einfach deinem Projekt als Resource hinzufügen.
Im Designer kannst du diese dann nach Belieben verwenden (an
Menüeinträgen, Buttons etc.).
Danke.
So kannte ich das von Früher auch.
Ein Set hatte ich damals für Enabled Icons und eins für Disabled Icons.
Meistens hatten die 32x32 Pixel.
Aber hat denn MSN nicht mit gedacht oder stelle ich mich einfach nur an.
Die haben so viele Icons freigegeben(2013 > 290MB, 2010 ~16MB), aber
geben kein Code zur Benutzung der Icons????
Hab mal schnell einen Blick in die Zusammenstellung von 2013 angesehen,
das könnte besser aussehen.
Wäre aber an der Lösung des oberen Problems weiter interessiert!
Biiittttteeee :-X
Danke.
Stephan schrieb:> Wäre aber an der Lösung des oberen Problems weiter interessiert!> Biiittttteeee :-X
Welches Problem denn jetzt konkret?
Stephan schrieb:> Ein Set hatte ich damals für Enabled Icons und eins für Disabled Icons.
Das brauchst du übrigens nicht. Die disabled-Icons werde automatisch
ausgegraut.
Stephan schrieb:> Aber hat denn MSN nicht mit gedacht oder stelle ich mich einfach nur an.> Die haben so viele Icons freigegeben(2013 > 290MB, 2010 ~16MB), aber> geben kein Code zur Benutzung der Icons????
Du brauchst KEINEN Code zur Benutzung der Icons. Wie kommst du darauf?
Ich habe ja oben geschrieben, wie es geht.
@Boris P.
Bin noch ziemlich müde, einfach zu alt, um die Nacht durch zu machen.
Boris P. schrieb:> Stephan schrieb:>> Ein Set hatte ich damals für Enabled Icons und eins für Disabled Icons.>> Das brauchst du übrigens nicht. Die disabled-Icons werde automatisch> ausgegraut.
Super schon mal ein Problem weniger.
Boris P. schrieb:> Stephan schrieb:>> Wäre aber an der Lösung des oberen Problems weiter interessiert!>> Biiittttteeee :-X>> Welches Problem denn jetzt konkret?
Wie ich versucht hatte es oben zu beschreiben.
Wie bekommt man die EINZELNEN ICONS aus dem SET????
Dazu muss es doch einen 3 Zeiler oder so geben:
- Lade Icon-Set
- Erkenne Transparente Farbe und echte Farbe
- Kalkuliere die Größe der einzelnen Icons
- Erstelle eine ImageList und befülle diese mit den AUSGESCHNITTEN ICONS
- Have FUN
Ok, bin Anfänger -> sind 5 Zeile geworden.
Du hast mir eine Alternative genannt, die ich jetzt auch Nutze. Danke.
Nicht die Lösung zu meiner Frage.
Das Einzel-Icon benutze ich jetzt.(Anhang von: 'Visual Studio 2013 Image
Library\2010_VS Icon Legacy\Icons - VS2010')
Stephan schrieb:>> wollte noch C++ in der Hinterhand haben, gibs bei den neueren>> Versionen nicht mehr!> Mir wart so als hätte ich das mal so gelesen......
Zur Debatte stand mal, ob es weiterhin Visual Studio kostenlos zur
Erstellung von Desktopanwendungen geben soll. War aber nur ein Hirnfurz,
hat sich erledigt und ist, nachdem sich Mr. Steve "Monkey boy" Ballmer
abgeseilt hat, mit der Community-Edition quasi ins Gegenteil gekippt:
Die Features der Pro-Version gibt es nun für die meisten Anwender
umsonst.
> Also ich benutze "Windows Forms Appl.", scheint ähnlich zum VC++ 6 von> Borland zu sein. (darin war ich mal sehr gut)
VC++ von Borland? Wäre mir neu ...
BTW: Ich würde dir nicht empfehlen, nun C++ zu verwenden, nur weil es
geht. Nicht wegen der Sprache, sondern weil du ein Winodws-GUI mit C#
(und Windows Forms oder WPF) einfacher zusammenbekommst. Mit C++
müsstest du MFC, ATL, Qt, wxWidgets, Win32++ o.ä. verwenden oder eben
den C-Weg gehen. C++/CLI möchte ich als Option mal weglassen.
Stephan schrieb:> Wie ich versucht hatte es oben zu beschreiben.> Wie bekommt man die EINZELNEN ICONS aus dem SET????
Das ist kein Icon-Set, sondern ein Preview der Icons zur Einbettung in
eine Webseite oder so. Wenn man stattdessen das echte Icon benutzt, ist
das sicher deutlich einfacher. Dann muß man sich auch keine Heuristik
ausdenken, um das zu tun:
Stephan schrieb:> - Erkenne Transparente Farbe und echte Farbe> - Kalkuliere die Größe der einzelnen Icons
@R. Rebentrost
Danke für die Info.
R. Rebentrost schrieb:> VC++ von Borland? Wäre mir neu ...
neeee alt! :-D
C++Builder 6 von Borland. War auch schon mit zusammen Klicken einer App.
(Visual Component Library (VCL) )
Rolf Magnus schrieb:> Dann muß man sich auch keine Heuristik> ausdenken
Normalerweise arbeitet man mit dem Graphiker zusammen oder gibt den
Aufbau der Sets selber vor.
Das Ausdenken kam von mir, da MS es nicht geschafft hat, ein
vernünftiges Beispiel zu liefern. Die werden Ihre Regeln zur Erstellung
solcher Sets schon haben.
Aber echt mal hat noch nie einer mit diesen Sets gearbeitet???
Diese Art der Anordnung von Graphiken ist doch nicht neu, mir fallen 10
Spiele auf Anhieb ein die das System Benutzen.
Eins ist zum Beispiel Freeciv:
Hier werden die Gebäude, Einheiten und andere Sachen so aufbereitet.
Die Leute werden sich aber unter einander, bestimmt verständigt haben
und den Aufbau Ihrer Graphiken kennen.
Ich hänge mal eins an(Admin: wenn nicht gewünscht bitte löschen, müsste
aber Ok sein)!
hier sind die einzelnen Bilder durch einen Rahmen getrennt, da kann man
einfach die Größe ermitteln.
Stephan schrieb:> "System.Windows.Shapes" habe ich auch nicht!!!
System.Windows.Controls und ...Shapes gehören zum WPF, wenn die
Anwendung auf WinForms basiert, sind die normalerweise nicht
referenziert.
Wenn's sein muss, könnten WPF-Sachen allerdings eingebunden werden:
https://msdn.microsoft.com/de-de/library/ms742215%28v=vs.110%29.aspx> Ist die Version 2010 nicht mehr so gut für einen Anfänger?> (wollte noch C++ in der Hinterhand haben, gibs bei den neueren Versionen> nicht mehr!)
Die erwähnte Community-Edition nehmen
https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx
ansonsten ginge C++ auch mit Express-Editionen, allerdings ohne MFC etc.
Stephan schrieb:> Das Ausdenken kam von mir, da MS es nicht geschafft hat, ein> vernünftiges Beispiel zu liefern. Die werden Ihre Regeln zur Erstellung> solcher Sets schon haben.
Wo ist das Problem? Die Standard-Icons sind jeweils in den
ICO-Unterordnern und können, ebenso wie die ganzen PNGs, direkt in einem
Programm verwendet werden.
https://msdn.microsoft.com/en-us/library/7k989cfy%28v=vs.90%29.aspx
Arc Net schrieb:> System.Windows.Controls und ...Shapes gehören zum WPF, wenn die> Anwendung auf WinForms basiert, sind die normalerweise nicht> referenziert.
Danke.
Wieder was gelernt. Doch wo finde ich solch WICHTIGE Info.
Bevor ich die Icons verwenden konnte wollte ich einen Kreis als
Bild-Ersatz malen und da wurde mir Ellipse aus "Shapes" vorgeschlagen.
Hatte mich schon gefreut das es so einfach gehen sollte. Aber es kommt
anders als man denkt. :-(
Kann ich in der Doku das irgendwie erkennen was zu WinForms gehört und
was nicht?
Arc Net schrieb:> Wenn's sein muss, könnten WPF-Sachen allerdings eingebunden werden:
nein Danke, nicht noch komplizierte als es schon ist.
Arc Net schrieb:> Wo ist das Problem?
Ich kann schon Bilder in das Projekt legen(embeded rec.) und laden.
Ich kann Sachen ausschneiden und weiter verarbeiten. Nur ein normales
Problem. ABER was ich NICHT kann, ist mir die EINZEL BILDER aus dem
GANZEN zu kopieren, ohne ein PIXEL Zähl-Orgie anzustellen.
so wie auch Philipp K. schrieb:> Komischerweise sind die Bilder Oberkanten ungefähr 49-50px voneinander> entfernt.. wenn Du von oben mit 49px anfängst landet jedes Bild in der> Mitte.
Danke nochmal an alle die mir geholfen haben.
DANKE
Aber zurück zum Thema:
IST ES MÖGLICH, mit C# Boardmitteln, EINZEL-BILDER aus einer
'BILDER-SAMMMLUNG' aus zuschneiden, dessen GRÖßE ich NICHT kenne ????
Die EINZEL-BILDER sind mit einer 'TRANSPARENT'-Farbe von einander
getrennt!
(siehe Anhang 1. Post)
Wenn ich der Erste bin der das versucht, ok, ich will es nur wissen.
ICH will hier keinen Programmierwettbewerb oder einen Blumentopf
gewinnen.
Ich habe mit der 'VS2013 Image Library' und der Hilfe von Boris eine
Alternative gefunden und kann mit dem Misserfolg auf mein Frage leben.
Eine Antwort hätte ich gerne.
mfg
Stephan
Stephan schrieb:> Kann ich in der Doku das irgendwie erkennen was zu WinForms gehört und> was nicht?
Klar. Auf irgendeinen Typnamen klicken, z.B. hier AccessText, Button
oder sonst etwas:
https://msdn.microsoft.com/de-de/library/system.windows.controls%28v=vs.100%29.aspx
PresentationFramework -> WPF
System.Windows.Forms -> Windows Forms
https://msdn.microsoft.com/de-de/library/system.windows.forms%28v=vs.100%29.aspx> Aber zurück zum Thema:> IST ES MÖGLICH, mit C# Boardmitteln, EINZEL-BILDER aus einer> 'BILDER-SAMMMLUNG' aus zuschneiden, dessen GRÖßE ich NICHT kenne ????> Die EINZEL-BILDER sind mit einer 'TRANSPARENT'-Farbe von einander> getrennt!
Eine fertige Methode, die selbstständig Icons in einem "Icon-Atlas"
erkennt, gibt es im .NET-Framework nicht. Bei komplexen Icons, die aus
mehreren voneinander getrennten Teilbereichen bestehen und relativ nah
zusammen stehen, ist das nicht ganz trivial (in manchen Fällen sogar
unmöglich). Das wäre auch etwas zu viel verlangt und gehört nicht per se
in eine allgemeine UI-Bibliothek.
> IST ES MÖGLICH, mit C# Boardmitteln, EINZEL-BILDER aus einer> 'BILDER-SAMMMLUNG' aus zuschneiden, dessen GRÖßE ich NICHT kenne ????
Bei deinem Original-Beispielbild: Sicher, du musst bloß die Pixel
auslesen und die Abstände analysieren.
http://csharpexamples.com/fast-image-processing-c/
Vielleicht würde es auch helfen, die Gemeinsamkeiten herauszufinden
(Abstände von Icon-Mitte zu Icon-Mitte etc.) und dann, falls sinnvoll,
die entsprechenden Werte für alle "Multi-Icon-PNGs" zu benutzen. Die
Größen und Abstände werden ja nicht von Datei zu Datei unterschiedlich
und zufällig sein?
> Diese Art der Anordnung von Graphiken ist doch nicht neu, mir fallen 10> Spiele auf Anhieb ein die das System Benutzen.
Das stimmt, sehr viele Spiele verwenden Textur-Atlanten zum Zweck der
Organisation und nicht zuletzt auch der Effizienz (die Dinger werden
komplett in den Grafikspeicher geladen).
http://www.gamasutra.com/features/20060126/figure1.jpg?iact=rc&uact=3&dur=68&page=1&start=0&ndsp=32&ved=0CCEQrQMwAGoVChMInbnlnvyRxgIVQhAsCh186w0Zhttp://payload198.cargocollective.com/1/8/282980/6261889/texture_desertTown.jpg
Aber darin sind die Größen der Teilbilder entweder identisch oder es
gibt jeweils eine kleine Datei dazu, in der die Positionen und Größen
der Teilbilder/Texturen stehen (diese "Sidecar-Dateien" werden von den
entsprechenden Tools gleich mit erzeugt).
Nachtrag:
R. Rebentrost schrieb:> Bei deinem Original-Beispielbild: Sicher, du musst bloß die Pixel> auslesen und die Abstände analysieren.
Oder einfach bei einer leeren Zeile (Zeile komplett mit A = 0) davon
ausgehen, dass das Ende des jeweiligen Icons erreicht ist. Das
funktioniert aber nur bei Icons ohne "vertikale Lücken"; darum der
Vorschlag mit den Abständen.
Stephan schrieb:> Danke nochmal an alle die mir geholfen haben.> *DANKE*>>> Aber zurück zum Thema:> IST ES MÖGLICH, mit C# Boardmitteln, EINZEL-BILDER aus einer> 'BILDER-SAMMMLUNG' aus zuschneiden, dessen GRÖßE ich NICHT kenne ????> Die EINZEL-BILDER sind mit einer 'TRANSPARENT'-Farbe von einander> getrennt!> (siehe Anhang 1. Post)
Wozu? Das sind normale Icons.
Beispiel: Auf einer Form einen ToolStrip hinzufügen, zum Testen mal
rechtsklicken und Insert Standard Items machen, dann einen neuen Button
hinzufügen. Dann Properties -> Image anklicken -> Local Resource ->
Import -> jetzt, da es nicht direkt angeboten wird, als Dateifilter *.*
und ein beliebiges .ico öffnen.
ImageScalingSize des ToolStrips auf 32x32 und zum Update einmal AutoSize
auf false und dann wieder auf true setzen.
Ergebnis: Die Standard-Bilder skalieren nicht mit, die .ico-Icons aus
der Sammlung dagegen schon.
Anderes Beispiel:
Icon ist in den Resourcen des Programs: Dann in einer Methode z.B.
Icon testIcon = new Icon(Properties.Resources.DerVergebeneName, 64,
64);
https://msdn.microsoft.com/de-de/library/System.Drawing.Icon.Icon(v=vs.110).aspxhttps://msdn.microsoft.com/de-de/library/system.drawing.icon_methods(v=vs.110).aspx
dort z.B. ToBitmap und die Bitmap-Save-Methoden sollten das Icon in der
passenden Größe extrahieren.
Ansonsten ist Win32-Api angesagt:
https://msdn.microsoft.com/en-us/library/ms648050%28VS.85%29.aspxhttps://msdn.microsoft.com/en-us/library/ms648069%28v=vs.85%29.aspx
1) png als Bitmap öffnen (z.B. per Bitmap.FromFile("tileset.png"))
2) mit Schleifen über Bitmap.GetPixel() drüber gehen und die Ränder
suchen
3) Gefundene Teilbilder ('Tile') per Graphics.DrawImage() in neu
erzeugte Bitmaps passender Größe kopieren
>dessen GRÖßE ich NICHT kenne
...ist allerdings eher unüblich.
Speziell bei Spielen speichert man sich die Abmessungen/Aufbau der
Tilesets eigentlich irgendwie mit oder sie sind generell fix. Man
erzeugt aus dem Tileset dann auch keine einzelnen Bitmaps, sondern
zeichnet direkt den entsprechenden Tile aus dem Tileset an die
gewünschte Stelle (z.B. mittels
https://msdn.microsoft.com/de-de/library/ms142040.aspx)
Für 1-zeilige Tilesets mit fixer Tilesize kann man auch auf eine
ImageList zurückgreifen:
https://msdn.microsoft.com/de-de/library/system.windows.forms.imagelist.imagecollection.addstrip(v=vs.110).aspx