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
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.
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.
Danke für eure infos 🙂
habe jetzt folgendes gemacht:
using System.Drawing.Text;
using System.Runtime.InteropServices;
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;
.....
//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 🙂
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
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)
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
@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 ....
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
@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)
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.
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 !!!
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)
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
und wenn ich deinen beitrag jetzt so lese hast du ja voll die ahnung
aber nur mich angreifen .. toll kannste das
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
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:
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)
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code