Laden...

Nfo-Datei in WinForms darstellen

Erstellt von TigerCrow vor 7 Jahren Letzter Beitrag vor 7 Jahren 2.923 Views
Thema geschlossen
T
TigerCrow Themenstarter:in
86 Beiträge seit 2017
vor 7 Jahren
Nfo-Datei in WinForms darstellen

Hallo,

wie kann ich eine NFO Datei grafisch darstellen in einer Windows Form? z.B. PictureBox

ich weiss ich frage unmögliche sachen 😭

als Beispiel habe ich mal eine NFO Datei hochgeladen, als bild/screenshot

Gruß
TigerCrow

C
2.122 Beiträge seit 2010
vor 7 Jahren

Eine kurze Suche ergab dass das Textdateien sind. Meinst du das?
Erstelle ein Bitmap, nimm eine Schriftart die alle nötigen Zeichen enthält, dann noch die richtige Codierung des Texts einstellen. Dann zeichnest du die Zeilen der Datei der Reihe nach ins Bitmap. Danach Bitmap in der PictureBox anzeigen.

D
985 Beiträge seit 2014
vor 7 Jahren

Wenn man die richtige Schriftart hat (ist auf jeden Fall eine mit einer festen Breite), dann braucht man den Text doch nur in einem Textfeld zu präsentieren, das als Font eben diese Schriftart verwendet.

T
TigerCrow Themenstarter:in
86 Beiträge seit 2017
vor 7 Jahren

Danke für eure infos 🙂

habe jetzt folgendes gemacht:

  1. die Schriftart Terminal in die Resources eingebunden !! ist auch eine Eingebettete Ressource
  2. diese using teile eingebunden:

using System.Drawing.Text;
using System.Runtime.InteropServices;

  1. gleich hier dann das:

 public partial class video_eingabe : Form
    {

        [System.Runtime.InteropServices.DllImport("gdi32.dll")]

        private static extern IntPtr AddFontMemResourceEx(IntPtr pbFont, uint cbFont,
           IntPtr pdv, [System.Runtime.InteropServices.In] ref uint pcFonts);

        FontFamily ff;
        Font font;
   .....

  1. 2 Funktionen geschrieben:

//Schrift laden
        public void ladeSchrift()
        {
            byte[] fontArray = videoverwaltung.Properties.Resources.NewDOS;
            int datalength = videoverwaltung.Properties.Resources.NewDOS.Length;
            IntPtr ptrData = Marshal.AllocCoTaskMem(datalength);
            Marshal.Copy(fontArray, 0, ptrData, datalength);

            uint cFont = 0;
            AddFontMemResourceEx(ptrData, (uint)fontArray.Length, IntPtr.Zero, ref cFont);
            PrivateFontCollection pfc = new PrivateFontCollection();
            pfc.AddMemoryFont(ptrData, datalength);
            Marshal.FreeCoTaskMem(ptrData);

            ff = pfc.Families[0];
            font = new Font(ff, 15f, FontStyle.Bold);

        }

        //Schrift einstellen
        private void allocFont(Font f, Control c, float size)
        {
            FontStyle fontstyle = FontStyle.Regular;
            c.Font = new Font(ff, size, fontstyle);
        }

NewDOS so heißt die Terminal Schrift 🙂

  1. in meinem Lader aufgerufen:

private void button3_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "NFO Datei (*.nfo)|*.nfo";

            ladeSchrift();
            allocFont(font, this.richTextBox1, 9);

            if (openFileDialog.ShowDialog(this) == DialogResult.OK)
            {
                String dateiname = openFileDialog.FileName;

                // datei lesen
                string text = File.ReadAllText(dateiname, Encoding.GetEncoding(1252)); 


                richTextBox1.Text = text;
            }
        }

und nu das Prob:
Die Schriftendatei ist vorhanden, hat auch keine 0 Bytes
nur wenn ich starte kommt: {"Der Index war außerhalb des Arraybereichs."}

nehme ich z.B. die Arial läuft alles sauber ( gleicher Vorgang )

Weiß zufällig jemand das Prob ?

habe auch mal die schriftart installiert.

muss noch dazu sagen:
nur im Notepad habe ich die schrift ... aber nur da 🙁

Gruß
TigerCrow

3.003 Beiträge seit 2006
vor 7 Jahren

In der RichTextBox einfach eine Festbreitenschriftart einstellen, war dir zu einfach?

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

3.825 Beiträge seit 2006
vor 7 Jahren

Kannst Du eine Schriftart verwenden die im Windows enthalten ist ? Dann brauchst Du die Schrift nicht in eine Resource einzubinden.

Dann geht das schreiben in eine Grafik so :

Bitmap bmp = new Bitmap("Bitmap.bmp");
RectangleF rectf = new RectangleF(70, 90, 1900, 1000);
Graphics g = Graphics.FromImage(bmp);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.DrawString(text, new Font("Tahoma", 40), Brushes.Black, rectf);

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

T
TigerCrow Themenstarter:in
86 Beiträge seit 2017
vor 7 Jahren

@LaTino

leider geht das net ... falscher Zeichencode
siehe Anhang

@BerndFfm
Leider nein, wie gesagt .. unter windows habe ich die Schriftart nur im Notepad sonst niegens 🙁

ich drehe noch durch ....

3.825 Beiträge seit 2006
vor 7 Jahren

Willst Du den Text nur anzeigen oder als Grafikdatei abspeichern ?

Die Schrift "Courier New" geht nicht ?

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

3.003 Beiträge seit 2006
vor 7 Jahren

@LaTino
leider geht das net ... falscher Zeichencode

Zeichencode? Meinst du eventuell Encoding? Wieso stellst du das nicht einfach ein?


using(var reader = new StreamReader(@"example.nfo", Encoding.GetEncoding(0x1b5))
   richtextbox1.Text = reader.ReadToEnd().Replace("\r", string.Empty);

Davon abgesehen war das von meiner Seite die letzte Hilfestellung beim Versuch, illegale Filmkopien zu archivieren. Pfui.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

T
TigerCrow Themenstarter:in
86 Beiträge seit 2017
vor 7 Jahren

die Schrift ""Courier New" geht leider net .. es muss die Terminal sein!

nur Anzeigen in eier Textbox oder richtextbox .. mir egal

anbei mal die Schriftart terminal und eine nfo datei bitte diese in .nfo umbenennen.

T
TigerCrow Themenstarter:in
86 Beiträge seit 2017
vor 7 Jahren

Davon abgesehen war das von meiner Seite die letzte Hilfestellung beim Versuch, illegale Filmkopien zu archivieren. Pfui.

Hier wird garnix illegal irgedwie kopiert oder sonstiges ... es geht nur um eine nfo datei einzulesen und sonst gar nix

und die Datei selber habe ich im netz gefunden .. also bitte nichts unterstellen !!!

3.003 Beiträge seit 2006
vor 7 Jahren

Hier wird garnix illegal irgedwie kopiert oder sonstiges ... es geht nur um eine nfo datei einzulesen und sonst gar nix

und die Datei selber habe ich im netz gefunden .. also bitte nichts unterstellen !!!

Klar, und wir ziehen uns die Hosen mit der Kneifzange an. Macht man so, wenn der erste Kontakt mit Warez mehr als 25 Jahre her ist. Korrekte Codepage auswählen, beliebige Festbreitenschriftart verwenden. Steht so auch 1:1 in der Wikipedia, aber was wissen wir schon.

Leute gibt's...

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

D
985 Beiträge seit 2014
vor 7 Jahren

Eine simple TextBox mit Consolas oder Lucida Console oder Courier New oder ... als Font, die Datei mit der richtigen CodePage geladen und den string der TextBox zugewiesen ergibt das gleiche Bild wie in der Notepad++ Anzeige.

Die CodePage steht bei Notepad++ unten rechts

T
TigerCrow Themenstarter:in
86 Beiträge seit 2017
vor 7 Jahren

und wenn ich deinen beitrag jetzt so lese hast du ja voll die ahnung
aber nur mich angreifen .. toll kannste das

T
TigerCrow Themenstarter:in
86 Beiträge seit 2017
vor 7 Jahren

Eine simple TextBox mit Consolas oder Lucida Console oder Courier New oder ... als Font, die Datei mit der richtigen CodePage geladen und den string der TextBox zugewiesen ergibt das gleiche Bild wie in der Notepad++ Anzeige.

Die CodePage steht bei Notepad++ unten rechts

Danke

ich schaue mal

3.003 Beiträge seit 2006
vor 7 Jahren

Meine Güte. Hast du es wenigstens ausprobiert, was ich dir hier sage? Ich hab dir sogar den Code hingeschrieben, was brauchst du noch? Ja, ist ausprobiert, funktioniert hier bei mir lokal. Hätte mich auch gewundert, wenn nicht.

Nochmal zum mitmeißeln:

  1. Encoding wählen, Codepage 437 (das ist die übliche nfo-Codepage)
  2. beliebige - BELIEBIGE - Festbreitenschriftart einstellen, sehe screenshot oben

Mr-Know-It-All, vielleicht beschäftigst du dich mal ein bisschen mit Zeichensätzen und Schriftarten?

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

16.842 Beiträge seit 2008
vor 7 Jahren

Bevor dieser Thread eine Antwort bekam, haben wir im Team schon überlegt diesen Thread zu schließen.
NFO Dateien haben ihren riesig überwiegenden Anwendungsfall in der illegalen Warez-Szene.
Auch das Bild im Startbeitrag zeigt ein NFO eines gerippten Films. Erkenntnis darauf ist die Tatsache, dass bei legalen Filmen keine NFO-Datei auf der DVD/Bluray liegt.
Zu der Aussage "NFO im Internet gefunden" kann ich persönlich sagen, dass ich es für sehr unwahrscheinlich halte, dass NFO-Dateien "einfach so" auf neutralen Seiten rumliegen...

Wir haben den Thread aus einem einzigen Grund nicht geschlossen:
Es gibt 2-3 legale Anwendungsfälle für NFO-Dateien.

Aufgrund der Reaktion des Threadstarters sind wir nun überzeugt, dass die Wahrscheinlichkeit des Umgangs mit NFO-Dateien illegalen Ursprungs sehr hoch ist und schließen daher den Beitrag.

Der Threadstarter hat aber ohnehin alle Hinweise um allgemein mit textbasierten Formatierungen umzugehen.

Thema geschlossen