Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Rico913
Thema: Wie Klasse ohne Konstruktor erstellen
Am im Forum: Grundlagen von C#

Super ... vielen Dank!! Mit der statischen Methode hats geklappt

Thema: Wie Klasse ohne Konstruktor erstellen
Am im Forum: Grundlagen von C#

Hi,

ich steh grad mal wieder auf dem Schlauch. Ich habe mir ein individuelles MessageForm mit DialogResult gebastelt. Das funktioniert auch alles, wie es soll.
Ich würde aber gern die Benutzung etwas abkürzen:

Momentan:


 MyMessageBox_Global myMSG = new MyMessageBox_Global();
 DialogResult dialog = myMSG.Get_DiaResult("Test 1 2 3 ", "hier steht die Nachricht", MyMessageBox_Global.msgButton.JaNein_Cancel, MyMessageBox_Global.msgIcon.Fehler, false);
 if(dialog == DialogResult.Yes)
            {........

Ich würde es gern wie die Standard-MessageBox benutzen. Also so:


MyMessageBox_Global.Get_DiaResult(......)

...ohne jedesmal neu zu Initialisieren.

Wie kann ich die Klasse "einbauen", dass ich sie direkt auffrufen kann. Könnt ihr mir bitte ein Stichwort geben?

Danke und viele Grüße
Rico

Thema: String auf mehrere Zeilen prüfen
Am im Forum: GUI: Windows-Forms

Hi,

ich würde gern ein String darauf prüfen, ob sein Inhalt einzeilig oder mehrzeilig ist.

Sozusagen möchte ich ja nach Inhalt das StringAlignment ändern:


string Text = XXX.Label_Text;
SizeF TextSize = TextRenderer.MeasureText(Text, new Font(Font_OCR_Label.Name, Font_Size_temp));

StringFormat sf = new StringFormat();

if(Text == einzeilig)
{
    sf.Alignment = StringAlignment.Center;
}
else
{
   sf.Alignment = StringAlignment.Near;
}

Thema: C zu C# Übersetzung
Am im Forum: Rund um die Programmierung

Hey,

ich bräuchte mal eure erfahrene Hilfe. Ich habe ein altes Script, welches in C geschrieben wurde und muss es, da ich die Funktion benötige, in C# integrieren.
Leider fehlt mir aber das Fachwissen - gerade im Punkto Zeiger - das hab ich in C noch nicht richtig kapiert.

Hier mal das Code-Beispiel:


UINT getuint( FILE *f) 
{
  int i;
  UINT ff;
  char *c;
  c = (char*)&ff;
  for( i=3; i≥0; i-- )
    c[i] = fgetc(f);
  return ff;
}

Könnte mir das bitte jemand in C# übersetzen?
Was bedeutet der Abschnitt:

char *c;
  c = (char*)&ff;

Warum gebe ich ff zurück, obwohl keine Operation stattfand? Woher kommt der Rückgabewert?

Vielen Dank schon mal im Vorraus....

Thema: Beenden von Outlook nach Mail
Am im Forum: Office-Technologien

Cool ... Danke dir!!!

Thema: Beenden von Outlook nach Mail
Am im Forum: Office-Technologien

Hallo,

ich möchte nach einer getätigten Aufgabe eine Mail über Outlook (Office365) versenden. Das funktioniert auch.
Nur habe ich zwei Optionen:
1. Outlook ist beim Nutzer schon geöffnet und soll nach dem Versenden offen bleiben
oder
2. Outlook vom Nutzer ist geschlossen und soll nach dem Versenden wieder geschlossen werden

Mein Code:


try
            {
                Microsoft.Office.Interop.Outlook.Application OL = new Microsoft.Office.Interop.Outlook.Application();
                Microsoft.Office.Interop.Outlook.MailItem Mail = OL.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
                Mail.Subject = Betreff;
                Mail.To = Empfaenger;
                Mail.Body = Nachricht;
                Mail.Display(false);
                Nachricht = string.Empty;
                Mail.Send();
                OL.Quit();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Exception");
            }

Gibt es einen Weg, zu erkennen, ob Outlook geöffnet ist?

Thema: SubForm in neuen Thread auslagern
Am im Forum: GUI: Windows-Forms

Hi,

ich habe ein Programm (Main_Form) und ein entsprechendes SubForm. In diesem Form lade ich eine dynamische Excel-Tabelle in ein DataGrid, welches ich nach bestimmten Anforderungen im Main_Form filtere.
Nun ist es so, dass es je größer die Tabelle ist, es spürbar länger dauert, bis ich im Main-Form eine Aktion ausführen kann.

Ist es möglich, das ganze SubForm in eine Art Backgroundworker o.ä. auszulagern? Und wenn ja, wie ist das Stichwort dafür? Können dabei Main_Form und SubForm "kommunizieren"?

Danke und viele Grüße
Rico

Thema: Herangehensweise beim Laden von Bilder mit unüblichen Format
Am im Forum: Rund um die Programmierung

Ehrlich gesagt übersteigt diese Programmierung momentan meine Kompetenzen.

Was würde die Programmierung eines Parsers kosten, wenn man es in Auftrag geben würde? Entsprechende Vorlagen in C und Pyhton sind vorhanden.
Was ich brauche ist das Bild und die im Bild gespeicherten Informationen (Tags).

Gern auch per PN....

Thema: vorhergehende Row bei DatagridView.Cellclick
Am im Forum: GUI: Windows-Forms

Hi,

ich habe schon seit längerem ein Problem, bei dem ich logisch festhänge:

Wenn ich den CellClick durchführe, dann beziehen sich alle Operationen auf die "neu" selektierte Zeile. Ich benötige aber den Index der Zeile von der ich komme.
Wenn ich eine Variable einsetze, wird diese beim CellClick überschrieben und ich bin wieder bei der neuen Zeile. Gedanklich drehe ich mich im Kreis....

Zum Hintergrund:
Ich führe in der aktuellen Zeile eine Aktion durch, bei der die Zeile entsprechend eingefärbt wird. Wenn ich nun per CellClickEvent die Zeile verlasse, soll die "Alte" eingefärbt sein und bleiben. Aber wenn ich bspw. eine Variable setze, wird im zweiten Durchgang die erste weider gelöscht. Liegt natürlich daran, dass CellClick den Index überschreibt.

Gibt es eine andere Möglichkeit den Index der Zeile von der ich komme abzufangen?

Mein Code im CellClickEvent:


private void dGV_Zeilen_einfaerben(int IndexRow)
        {
            if (Is_ImageMeasurement == true)
            {
                dGV_paint_Rows(Farbe_dGV_IsMeasured, IndexRow);
                Is_ImageMeasurement = false;
            }
            else
            {
                if (dGV_ImageList[7, IndexRow].Value.ToString() == "0")
                {
                    dGV_paint_Rows(Color.IndianRed, IndexRow);
                }
                else
                {
                    dGV_paint_Rows(Color.White, IndexRow);
                }

            }
        }

Thema: Sammelthema Wünsche und Bugreports myCSharp
Am im Forum: Wünsche und Kritik

Hi,

wenn ich aus der Google-Suche komme, lande ich seit der Umstellung immer auf der Forumseite und nicht beim entsprechenden Thema.
BeispielLink: MyCSharp.de - Diskussionsforum

Liegt es womöglich an meiner Browsereinstellung?? ...habe aber nix verändert.

Viele Grüße

Thema: DataGridView serialisieren - Fehler
Am im Forum: GUI: Windows-Forms

Woher wusste ich nur, dass ich in puncto BinaryFormatter solch ein Statement bekomme
Ich hatte das zwar schon des öfteren gelesen, aber er funktioniert in diesem Punkt gut.

Welche Probleme können denn damit auftreten??


Danke für die kurze Erklärung zum Serialisieren. Ehrlich gesagt habe ich da nach dem Schnellschussprinzip gearbeitet. -> Such bei Google, Kopiere, funzt, keine Gedanken drüber machen.
Ich weiß, dass ist nicht die feine Art und nun bedarf es doch etwas Einarbeitung.

Viele Grüße

Thema: DataGridView serialisieren - Fehler
Am im Forum: GUI: Windows-Forms

Hallo,

ich möchte ein bestimmte Werte aus einem DatagridView (dgV_ImageList) in einem anderen DatagridView als Backup speichern.

Hier der Code:



DataGridView LoadImages_Info = new DataGridView();

private void Save_Project_Click(object sender, EventArgs e)
        {
            if (savFD_save_project.ShowDialog() == DialogResult.OK)
            {
                string SaveFile = savFD_save_project.FileName; //Filename mit Pfad
                Save_Listen_Recovery();
                Save_Messung_Daten_List(SaveFile, Liste_Recovery_Project);
            }
        }

private void Save_Listen_Recovery()
        {
            
            List<string> FileNames = new List<string>();

            foreach (DataGridViewRow row in dGV_ImageList.Rows)
            {
                FileNames.Add(dGV_ImageList.Rows[row.Index].Cells[5].Value.ToString());
                for (int i = 2; i < dGV_ImageList.Columns.Count; i++)
                {
                    LoadImages_Info.Columns.Add(i.ToString(),i.ToString());
                    LoadImages_Info.Rows.Add(dGV_ImageList.Rows[row.Index].Cells[i].Value);
                }
            }

            Liste_Recovery_Project.Add(new Liste_Recovery()
            {
                Liste_Messung_Recovery = Liste_Messung_Daten,
                FileListe_Recovery = FileNames,
                Image_DataGrid = LoadImages_Info
                
            });
        }

private void Save_Messung_Daten_List(string FilePath, List<Liste_Recovery> SaveList)
        {
            FileStream stream;
            stream = new FileStream(FilePath, FileMode.Create);
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(stream, SaveList);
            stream.Close();
            SaveList.Clear();
        }

[Serializable]
public class Liste_Recovery
{
    public List<Liste_Messung> Liste_Messung_Recovery { get; set; }
    public List<string> FileListe_Recovery { get; set; }
    public DataGridView Image_DataGrid { get; set; }
}


Ich bekomme aber eine Exeption:
Fehler
System.Runtime.Serialization.SerializationException: "Der Typ "System.Windows.Forms.DataGridView" in Assembly "System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" ist nicht als serialisierbar gekennzeichnet."

Ich habe doch aber das DataGridView als Serializable markiert

Wenn ich das Image_DataGrid auskommentiere funktioniert es tadellos??

Thema: Herangehensweise beim Laden von Bilder mit unüblichen Format
Am im Forum: Rund um die Programmierung

Meine Frage war an die Herangehensweise.

1. Bild parsen
--> krieg ich hin

2. Blöcke abarbeiten
--> theoretisch denke ich, weiß ich wie es gemeint ist.

Aber es geht los, dass ich ein Problem habe, die Doku zu verstehen. Mir fehlt der Ansatz :(
D.h. was muss ich in C# tun, damit ich ein Block abarbeiten kann und wie komme ich an das Bild.

Thema: Herangehensweise beim Laden von Bilder mit unüblichen Format
Am im Forum: Rund um die Programmierung

Danke für die Beiträge....

Das Format hat sich in den letzten 15 Jahren nicht geändert. Da die Tools auch keine Updates erhalten (frei dem Motto never change a running system - sind so schon teuer genug) wird sich an der Situation nichts ändern.

Es gibt schon diverse Importer für dieses Format. Aber entweder mit einer zusätzlichen Programmkomponente (Softwareeigene Sprache) oder in C bzw Python.
Nur nicht in C# und zum "Übersetzen" fehlt mir das Wissen über den Ablauf.

Will es auch nicht nur abschreiben, sondern eben verstehen, was passiert bzw. was passieren muss, damit ich am Ende ein Bild + die dazugehörigen Tags habe.

Thema: Herangehensweise beim Laden von Bilder mit unüblichen Format
Am im Forum: Rund um die Programmierung

Hi,

ich arbeite schon seit längeren an einem Bemaßungsprogramm. Das funktioniert bisher sehr gut für die gängigen Bildformate.

Nun habe ich aber eine Toolgruppe, die Bilder in einem softwareeigenem Format abspeichert (*.dm3).

Ich habe für dieses Dateiformat eine Dokumentation vorliegen, aber mir fehlt der Ansatz/Wissen darüber, wie man dieses Format in ein C#-lesbares Bild umwandelt.

Vermutlich muss die Datei zeilenweise eingelesen und umgewandelt werden, oder? Könnt ihr mir bitte ein Denkanstoß geben oder kurz die Prozedur theoretisch anreissen, damit ich weiß, wonach ich suchen muss bzw. ich mich einarbeiten kann?

Ich hab die Doku mal angehangen.

Danke im Voraus.....

Thema: XML Deseralisierung gibt Daten nicht weiter
Am im Forum: Grundlagen von C#

Das isses ... ich danke dir!!!!!

Thema: XML Deseralisierung gibt Daten nicht weiter
Am im Forum: Grundlagen von C#

Anscheinend werden die Werte richtig ausgegeben, aber bei der Übergabe scheitert es:


XMLgenerator AdminXML = new XMLgenerator();

        public void Load_Settings()
        {
            AdminXML.Load();
            num_Messlinie_Thickness.Value = AdminXML.Messlinie_Thickness;
             ........
             ........
        }

Thema: XML Deseralisierung gibt Daten nicht weiter
Am im Forum: Grundlagen von C#


[Serializable]
	class XMLgenerator
	{
	        public decimal Messlinie_Thickness;
		public SerializableFont Draw_Label_Image_Font, Draw_Label_Messlinie_Font;
		public decimal LinienEnde_Radius;
		public Color LinienEnde_Farbe;
		public Color Messlinie_Farbe, Draw_Guideline_Farbe;
		public bool NummerierungLinien;
		public int Messen_Text_Rundung;
		public string LDaten_Drive;
		public decimal Unit_Switch_PixelSize_threshold;

		
		private void SetDefaultValues()
		{
			this.Messlinie_Thickness = 1;
			this.Draw_Label_Image_Font = new SerializableFont(new Font("Arial", 8));
			this.Draw_Label_Messlinie_Font = new SerializableFont(new Font("Arial", 8));
			this.LinienEnde_Radius = 1;
			this.LinienEnde_Farbe = Color.Red;
			
			this.NummerierungLinien = false;
			this.Messen_Text_Rundung = 1;
			this.Unit_Switch_PixelSize_threshold = 10;
			this.LDaten_Drive = @"\\sdrsmalabp03\malab$";
		}

		// ---------------------------------------------------------------------------------------

		
		[XmlIgnore]
		public const string FileName = "......\Programmdaten\\admin_config.dat";

		
		[XmlIgnore]
		public static XMLgenerator Setting { get; set; }

		
		public XMLgenerator()
		{
		}

		public static void Default()
		{
			XMLgenerator.Setting = new XMLgenerator();
			XMLgenerator.Setting.SetDefaultValues();
		}
		
		public XMLgenerator Load()
		{
		
			var serializer = new DataContractSerializer(typeof(XMLgenerator));
			using (var stream = new XmlTextReader(FileName))
			{
				XMLgenerator config = serializer.ReadObject(stream) as XMLgenerator;
				return config;
			}

		}


		public void Save()
		{
			var serializer = new DataContractSerializer(typeof(XMLgenerator));
			using (var stream = new XmlTextWriter(FileName, Encoding.Unicode))
			{
				serializer.WriteObject(stream, this);
			}
		}
	}


	[DataContract]
	internal class Setting
	{
		[DataMember]
		public decimal Messlinie_Thickness { get; set; }
		[DataMember]
		public SerializableFont Draw_Label_Image_Font { get; set; }
		[DataMember]
		public decimal LinienEnde_Radius { get; set; }
		[DataMember]
		public SerializableFont Draw_Label_Messlinie_Font { get; set; }
		[DataMember]
		public Color LinienEnde_Farbe { get; set; }
		[DataMember]
		public Color Messlinie_Farbe { get; set; }
		[DataMember]
		public Color Draw_Guideline_Farbe { get; set; }
		[DataMember]
		public bool NummerierungLinien { get; set; }
		[DataMember]
		public int Messen_Text_Rundung { get; set; }
		[DataMember]
		public string LDaten_Drive { get; set; }
		[DataMember]
		public decimal Unit_Switch_PixelSize_threshold { get; set; }

	}

Thema: XML Deseralisierung gibt Daten nicht weiter
Am im Forum: Grundlagen von C#

Ich stehe momentan vor folgendem Problem:

Ich serialisiere eine XML-Datei -> funktioniert:


public void Save()
		{
			
			var serializer = new DataContractSerializer(typeof(XMLgenerator));
			using (var stream = new XmlTextWriter(FileName, Encoding.Unicode))
			{
				serializer.WriteObject(stream, this);
			}
		}

Der Code für die Deserialisierung sieht wie folgt aus:


public XMLgenerator Load()
		{
		
			var deserializer = new DataContractSerializer(typeof(XMLgenerator));
			using (var stream = new XmlTextReader(FileName))
			{
				XMLgenerator config = deserializer.ReadObject(stream) as XMLgenerator;
				return config;
			}

		}

Leider wird aber in der Zeile return config nichts ausgegeben.
Laut Debugger liest er aber alle Daten eine Zeile vorher "XMLgenerator config ...." richtig aus.

Warum werden diese nicht "übergeben"? Was mache ich falsch?

Thema: Speicherort user.settings ändern
Am im Forum: Grundlagen von C#

Danke für eure Meinungen.
Ich habe jetzt die user-Settings unberührt gelassen und für die Admin-Setting nutze ich die XML-Serialisierung.

Thema: Speicherort user.settings ändern
Am im Forum: Grundlagen von C#

Ich möchte gern differenzieren zwischen User-Settings und Admin-Settings.

Die User-Settings können unbehandelt bleiben.

Die Admin-Settings sollen auf einem zentralen Netzwerklaufwerk gespeichert werden, damit alle mit den selben Einstellungen arbeiten.

Thema: Speicherort user.settings ändern
Am im Forum: Grundlagen von C#

Hi,

gibt es eine Möglichkeit den Speicherort der user.config-Datei festzulegen.
Konnte dazu leider nichts Genaues finden.

Danke und viele Grüße

Thema: Wie kann ich eine Form aus einer anderen Form aktualisieren?
Am im Forum: GUI: Windows-Forms

Danke für die Hinweise!

@TH69: ShowDialog() hat bei mir nicht funktioniert, da das Form direkt geschlossen wird. Möglicherweise gibt es da einen Weg, aber da fehlt mir noch etwas Wissen.

Dein Tutorial kannte ich bis dato nicht. Da ich öffter, verschiedenste Unterformulare öffnen muss, werde ich das nachher durcharbeiten. Da gibt es sicher Überarbeitungsbedarf - vielen Dank!

Bis dahin habe ich die für mich gängige Lösung:


Form_Kalibrierungsfenster _Kalibrierungsfenster;

        public void Berechnung_Kalibrierung()
        {
            

            if (WaitHandler == false)
            {
                
                _Kalibrierungsfenster = new Form_Kalibrierungsfenster();
                _Kalibrierungsfenster.Show();
                _Kalibrierungsfenster.TopMost = true;
                _Kalibrierungsfenster.lbl_Bilddaten.Text = Image_Width.ToString() + " x " + Image_Height.ToString() + " Pixel";

            }
            else if (WaitHandler == true)
            {
                WaitHandler = false;
                _Kalibrierungsfenster.lbl_PixelSize.Text = Math.Round(PixelSize_Kali, 5).ToString() + " " + Kali_Unit_Input + " pro Pixel";

            }
        }

Viele Grüße

Thema: Wie kann ich eine Form aus einer anderen Form aktualisieren?
Am im Forum: GUI: Windows-Forms

Hi,

folgendes:
Ich greife von Form1 auf ein anderes Form (Form_Kalibrierungsfenster) zu. Darin habe ich zwei Textboxen, Comboboxen und zwei Buttons.
Der User soll in den Comboboxen einen Wert und eine Einheit auswählen. Daraus wird ein Pixelwert berechnet, der mit Klick auf den Button, angezeigt werden soll.

Nun habe ich folgendes Problem:
Wenn mein Code, folgend aussieht, dass Form_Kalibrierungsfenster aushalb der Funktion erstellt wird, wird lbl_PixelSize.Text geändert:



       Form_Kalibrierungsfenster _Kalibrierungsfenster = new Form_Kalibrierungsfenster();
        
        public void Berechnung_Kalibrierung()
        {
            
            if (WaitHandler == false)
            {
                _Kalibrierungsfenster.lbl_Bilddaten.Text = Image_Width.ToString() + " x " + Image_Height.ToString() + " Pixel";

                _Kalibrierungsfenster.Show();
                _Kalibrierungsfenster.TopMost = true;

            }
            else if (WaitHandler == true)
            {
                WaitHandler = false;
                _Kalibrierungsfenster.lbl_PixelSize.Text = Math.Round(PixelSize_Kali, 5).ToString() + " " + Kali_Unit_Input + " pro Pixel";

            }
        }
Problem dabei, ich kann das geschlossene Form nicht nochmal öffnen.

Wenn ich aber:


 Form_Kalibrierungsfenster _Kalibrierungsfenster;
        
        public void Berechnung_Kalibrierung()
        {
            _Kalibrierungsfenster = new Form_Kalibrierungsfenster();

            if (WaitHandler == false)
            {
                _Kalibrierungsfenster.lbl_Bilddaten.Text = Image_Width.ToString() + " x " + Image_Height.ToString() + " Pixel";

                _Kalibrierungsfenster.Show();
                _Kalibrierungsfenster.TopMost = true;

            }
            else if (WaitHandler == true)
            {
                WaitHandler = false;
                _Kalibrierungsfenster.lbl_PixelSize.Text = Math.Round(PixelSize_Kali, 5).ToString() + " " + Kali_Unit_Input + " pro Pixel";

            }
        }
Wenn ich es aber so schreibe, funktioniert das Form-Handling, wie ich es möchte, aber nach Klick auf meinen Button wird lbl_PixelSize.Text nicht aktualisiert.

Woran liegt das?

Thema: Wie beim OpenFileDialog nach Dateiendung filtern?
Am im Forum: Grundlagen von C#

Super ... Danke filename.ToLower().EndsWith(".jpg") ist genau das, was ich gesucht habe :D

Den Verzeichnishinweis hab ich übernommen.

Thema: Wie beim OpenFileDialog nach Dateiendung filtern?
Am im Forum: Grundlagen von C#

Hi,

Ich habe ein OpenFileDialog mit dem ich verschiedene Bilddateien öffnen möchte.
Nun ist es aber so, dass ich von verschiedenen Tool-Herstellern unterschiedliche Bildformate mit entsprechenden Dateiendungen habe, für die ich einen Import-Filter schreiben muss.

Ich stell mir das ganze so vor:

- Öffne Dateien
- Wenn Datei Endung *.ser hat, dann mach das


if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                
                string[] selectedFiles = openFileDialog1.SafeFileNames;
                string[] files = openFileDialog1.FileNames;
                

                Bilder_Anzahl += files.Length;
                

                for (int i = 0; i < files.Length; i++)
                {
                ........

Wie der Filter vor dem Öffnen funktioniert ist mir klar, aber danach?
Gibt es da eine einfache Möglichkeit?

Thema: Wie kann ich eine Linie mit einer Checkbox löschen?
Am im Forum: Grafik und Sound

Hi,

ich habe eine PictureBox mit einem Bild. Dieses soll vermessen werden.

Mit der Maus soll eine Art Fadenkreuz, wie bspw. im CAD, angezeigt werden. Dies kann der Nutzer mit einem Checkbox-Schalter aktivieren und deaktivieren.
Das funktioniert auch, aber das Fadenkreuz bleibt nach Deaktivierung immer noch gezeichnet und ich bekomme es einfach nicht weg :-(

Hier mein Code:


 private void picBox_Measurement_Overlay_MouseMove(object sender, MouseEventArgs e)
        {
            if (CenterCross_Active == true)
            {
                pictureBox_Image.Paint += new PaintEventHandler(pictureBox_Image_Paint);
                CenterCross_X = e.Location.X;
                CenterCross_Y = e.Location.Y;
                pictureBox_Image.Refresh();
            }
        }

private void togSW_CenterCross_CheckedChanged(object sender, EventArgs e)
        {
            if (togSW_CenterCross.Checked == true)
            {
                CenterCross_Active = true;
            }
            else if (togSW_CenterCross.Checked == false)
            {
                CenterCross_Active = false;
                pictureBox_Image.Paint -= new PaintEventHandler(pictureBox_Image_Paint);
                pictureBox_Image.Refresh();
            }
        }
        
private void pictureBox_Image_Paint(object sender, PaintEventArgs e)
        {
                Pen CenterCross = new Pen(Color.Blue);
                e.Graphics.DrawLine(CenterCross, CenterCross_X, 0, CenterCross_X, pictureBox_Image.Height);
                e.Graphics.DrawLine(CenterCross, 0, CenterCross_Y, pictureBox_Image.Width, CenterCross_Y);
        }

Habt ihr ein Hinweis?

Thema: Warum hat eine Berechnung eine Abweichung von 1 oder sogar 2?
Am im Forum: Grundlagen von C#

ohh .. ich hatte ein Copy&Paste-Feher drin:

Der Variablen der Listenwerte haben folgende Werte:
Liste_Messung_Filter_Daten[MovingSegment].Start_Point_X = 153
Liste_Messung_Filter_Daten[MovingSegment].Start_Point_Y = 235


Eben nicht gleich:


int Liste_Messung_Filter_Daten_MovingSegment_Start_Point_Y_temp =  Liste_Messung_Filter_Daten[MovingSegment].Start_Point_Y;
236 = 235

MovingSegment hat den Richtigen und bei allen den gleichen Wert, bspw. hier 0

Thema: Warum hat eine Berechnung eine Abweichung von 1 oder sogar 2?
Am im Forum: Grundlagen von C#

Leider habe ich bei den Listen-Werten eine Fehlermeldung bekommen.
Ich habe diese in einer extra Klasse definiert:


public class Liste_Messung_Filter
{
    public int Image_ID_Lst { get; set; }
    public int Messlinie_ID_Lst { get; set; }
    public double Laenge_Lst { get; set; }
    public int Start_Point_X { get; set; }
    public int Start_Point_Y { get; set; }
    public int End_Point_X { get; set; }
    public int End_Point_Y { get; set; }
    public float Scale_Lst { get; set; }
}

Der Variablen der Listenwerte haben folgende Werte:
Liste_Messung_Filter_Daten[MovingSegment].Start_Point_X = 153
Liste_Messung_Filter_Daten[MovingSegment].Start_Point_Y = 235

Um sie auszulesen habe ich sie in eine extra-Variable schreiben lassen:


int Liste_Messung_Filter_Daten_MovingSegment_Start_Point_X_temp =  Liste_Messung_Filter_Daten[MovingSegment].Start_Point_X;
int Liste_Messung_Filter_Daten_MovingSegment_Start_Point_Y_temp =  Liste_Messung_Filter_Daten[MovingSegment].Start_Point_Y;

Und dort passiert bei Y etwas Merkwürdiges:
Ergebnis: 236 = 235

Thema: Warum hat eine Berechnung eine Abweichung von 1 oder sogar 2?
Am im Forum: Grundlagen von C#

Zitat von Spook
Ich rate einfach mal:
MovingSegment ist ein Index einer Schleife. Du inkrementierst diesen und vergleichst dann die Werte aus dem letzten mit denen aus dem aktuellen Durchlauf.

Fast.
MovingSegment ist der Index einer bestimmten Linie in einem Bild, welche ich verschieben möchte. Das klappt auch alles ohne Probleme.

Nun habe ich ein Zoomfaktor eingeführt. Das heisst in meiner Liste wird der jeweilige Zoomfaktor (Liste_Messung_Filter_Daten[MovingSegment].Scale_Lst) gespeichert. Hinzu kommt der Zoomfaktor des aktuellen Bildausschnittes (scale). Diese beiden Werte multipliziere ich mit einander - beides float.

In meinem Testbeispiel ergibt dies 1.

Um nun in der jeweiligen Zoomstufe zu verschieben, brauche ich den Startpunkt, hochgerechnet auf die aktuelle Zoomstufe. D.h. den alten Startpunkt (Liste_Messung_Filter_Daten[MovingSegment].Start_Point_Y) * scale_temp_Y

Und da kommt nicht das heraus, was ich bei der Multiplikation mit eins erwarten würde.