myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

C# Zeichenprogramm Fehlersuche/Verbesserungen

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 05.05.11, 22:18   #1
Defens93
Anfänger
 
Registriert seit: Apr 2010
Beiträge: 6
Bedankt: 11
Defens93 ist noch neu hier! | 0 Respekt Punkte
Standard C# Zeichenprogramm Fehlersuche/Verbesserungen

Hey Leude,

Ich bin noch nicht wirklich sehr weit mit C#, und hab ein Zeichenprogramm geschrieben. Es ist noch nicht fertig, und es gibt endlich viele Verbesserungsstellen und Fehler.
Das Zeichnen hat bis vor kurzem funktioniert, aber dann hab ich die Funktionen "Speichern" und Öffnen hinzugefügt, und jetzt klappts nimmer Bei jedem beliebigen Grafik.*-Befehl kommt "Object reference not set to an instance of an object." Wäre euch sehr verbunden wenn ihr mal drüberschauen könntet
LG Freddy

DOWNLOAD


Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Zeichnenprogramm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
} }
Das Design:
Defens93 ist offline   Mit Zitat antworten
Ungelesen 06.05.11, 08:46   #2
testerws
Newbie
 
Registriert seit: Apr 2009
Beiträge: 78
Bedankt: 21
testerws ist noch neu hier! | 0 Respekt Punkte
Standard

Bist du es schon mal mit dem Debugger durchgegangen und gesehen an welcher Stelle das Objekt auf welches du zugreifen möchtest, nicht instanziert ist (bzw. null)?
Sonst kannst du ja mal dein Projekt zum runterladen posten.
testerws ist offline   Mit Zitat antworten
Ungelesen 06.05.11, 09:17   #3
Defens93
Anfänger
 
Registriert seit: Apr 2010
Beiträge: 6
Bedankt: 11
Defens93 ist noch neu hier! | 0 Respekt Punkte
Standard

Hey,
Danke für deine Antwort!
Ja, und ich glaube das die grafik null ist, weil beim Form_Load-Event das pictureBox1.Image eingelesen wird, was auch Null ist zu diesem Zeitpunkt. Aber das ist doch normal und soll auch so, oder?

Habe das Programm jetzt mal oben an den Thread zum DL hingemacht.
LG
Defens93 ist offline   Mit Zitat antworten
Ungelesen 06.05.11, 09:52   #4
testerws
Newbie
 
Registriert seit: Apr 2009
Beiträge: 78
Bedankt: 21
testerws ist noch neu hier! | 0 Respekt Punkte
Standard

Kannst deine Form1_Load Methode so ändern:


Code:
 private void Form1_Load(object sender, EventArgs e)
        {
            if (pictureBox1.Image != null)
            {
                pic = new Bitmap(pictureBox1.Image);
                Graphics grafik = Graphics.FromImage(pic);
            }
            
        }
Sonst würde ich dir noch empfehlen kein Englisch/Deutsch zu mischen, verwende englische Begriffe für Variablen/Methoden usw.
Ich habe dein Programm nicht komplett getestet, sondern nur gestartet und beim Start hatte ich bereits an dieser Stelle eine nullpointerexception
testerws ist offline   Mit Zitat antworten
Ungelesen 06.05.11, 11:41   #5
Defens93
Anfänger
 
Registriert seit: Apr 2010
Beiträge: 6
Bedankt: 11
Defens93 ist noch neu hier! | 0 Respekt Punkte
Standard

Hey,
Danke nochmal. Was soll diese If-Abfrage denn bringen? Ich muss die pictureBox ja als Graphic verwenden, damit ich nachher öffnen&speichern kann. Also muss er das immer machen beim starten. Aber naja, ich denke mal du willst damit erstmal nur den Fehler umgehen, oder? Klappt bei mir aber nicht.. selber Fehler
Habe mal versucht den Wert der pictureBox zu ändern, sodass er nicht mehr null ist, indem ich just ein Bild von meiner HD eingebunden hab(hat geklappt, denn er geht dann in die If-Abfrage^^). Hat aber nix gebracht, stürtzt immer noch bei jedem grafik.* befehl ab, selbe Meldung.

Wenn ich bei Zeile42 nach "pic = new Bitmap(pictureBox1.Image);" nen Breakpoint setze, sagt er mir, das pic den Wert "{System.Drawing.Btimap}" hat, aber da steht nix von der pictureBox.Image die ich vorher da reingemacht hat. Außerdem wird der Wert in roter Schrift angezeigt. Ist das normal, oder müsste beim Wert nicht noch mehr stehn`?
Einen Schritt weiter wird die "Graphics Grafik" zu "{System.Drawing.Graphic}", und beim "}", wo er aus If rausgeht kriegt Grafik wieder den Wert 0?? Da kann doch was nciht stimmen, wahrscheinlich lese ich das pictureBox.Image nicht richtig in "pic" ein.
Defens93 ist offline   Mit Zitat antworten
Ungelesen 06.05.11, 19:28   #6
testerws
Newbie
 
Registriert seit: Apr 2009
Beiträge: 78
Bedankt: 21
testerws ist noch neu hier! | 0 Respekt Punkte
Standard

So, sry hatte noch einiges zu tun

Ich habe jetzt versucht ein Bild mittels deines Tools zu öffnen, und natürlich wieder eine nullpointerexception, die erste war beim Starten deine Programms, da du in der Form1_Load Methode (also beim Starten deiner Anwendung) ein nichts! in pic speichern wolltest -> klar erste nullpointer, dann habe ich ein Bild öffnen wollen (da ich keine tiffs aufm Rechner sofort parat hatte, so habe ich in deiner öffnenToolStripMenuItem_Click Methode den Filter auskommentiert, sowohl als auch die Aufrufe grafik.save() und grafik.dispose()
Code:
 private void öffnenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            öffnen.InitialDirectory = "Desktop";
            //öffnen.Filter = "TIFF-Bilder (*.tiff) | *.tif; *.tiff";
            öffnen.Title = "Bild öffnen";
            if (öffnen.ShowDialog() == DialogResult.OK)
            {
                pictureBox1.Image = Bitmap.FromFile(öffnen.FileName);
                //grafik.Save();
                //grafik.Dispose();
            }
        }
Übrigens die von mir fix eingebaute Abfrage in der Form1_Load Methode Methode ist nicht unsinnig, zumindest nicht wenn der Code so aussieht wie du es programmiert hast, was erwartest du denn wenn du nichts in deine Box reinladen willst? Du solltest wirklich einige Aufrufe überprüfen, wo etwas vllt. gespeichert/geladen werden soll was noch nicht exisitert.
testerws ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 Uhr.


Sitemap

().