Hy!
Sorry, ich muß euch nochmal belästigen, hoffentlich gehe ich keinen am Keks :-D
Ich hätte da drei fragen, vielleicht kennt jemand die eine oder andere Lösung
Ich hab mich natürlich vorher im Forum/Internet und Einsteigerressourcen umgesehen, aber keine Lösung gefunden, bzw vielleicht hab ichs übersehen.
1) PictureBox
Ich lade mit
picMap.Image = System.Drawing.Image.FromFile(OpenFileDialog1.FileName) eine Bild in eine Picturebox. Wie aber bekomme ich das wieder komplett weg? Das ich ein leeres weißes BMP im Speicher erstelle und dann der PictureBox zuweise, kann ja nicht das wahre sein, oder?
2) Datenfelder
Ich hab jetzt schon öfter im Forum gelesen, das die alten Datenfelder ausgedient haben, und das man jetzt Stringbuilder etc verwenden soll. Aber mir ist irgendwie nicht wirklich klar, wie ich meine jetzigen Datenfelder in die neuen ändern soll... Das Problem ist, das mein Prog mittlerweile größere Datenmengen verarbeiten muß, und alles, was schneller ist, ist besser
Hier mal mein Datenfeld (in einem Modul):
Public Structure Coordinate
Dim X1 As Double
Dim Y1 As Double
Dim X2 As Double
Dim Y2 As Double
End Structure
Public Structure LAYer
Dim UserCreated As Boolean
Dim LayerName As String
Dim ICAO As Char()
Dim LineWidth As Short
Dim LineType As Short
Dim LineColor As System.Drawing.Color
Dim FillColor As System.Drawing.Color
Dim NameColor As System.Drawing.Color
Dim Transparent As Short
' Dim Polygon As Boolean 'Form geschlossen => Füllen/Trans mit API
Dim KurzBeschreibung As String 'Kurzbeschreiubung zb TAW
Dim Obergrenze As String 'Obergrenze
Dim Untergrenze As String 'Untergrenze
Dim KurzbeschreibungVisible As Boolean
Dim Visible As Boolean
Dim Coordinates() As Coordinate
Dim Drawcoordinates() As Coordinate
End Structure
Public LAY() As LAYer Und so wird das Ding mit Daten gefüttert:
(PS Die speicherdatei ist, daweil so vorgegeben, kann ich erst ändern, wenn ich eine eiges format erstelle, wobei ich noch nicht genau weiß, wie ich das anlegen kann)
Input(fn, Anzahl)
Main.ToolStripProgressBar1.Minimum = 0
Main.ToolStripProgressBar1.Maximum = Anzahl
Main.ToolStripProgressBar1.Step = 1
Main.ToolStripProgressBar1.Visible = True
System.Windows.Forms.Application.DoEvents()
ReDim LAY(Anzahl - 1)
For i = 0 To (LAY.GetUpperBound(0))
'Main.ToolStripProgressBar1.Value = i / Anzahl * 100
'Main.ToolStripProgressBar1.Value = i
Main.ToolStripProgressBar1.PerformStep()
Input(fn, LAY(i).UserCreated)
Input(fn, LAY(i).ICAO)
Input(fn, LAY(i).LayerName)
Main.ToolStripStatusLabel1.Text = "Loading Layers... [" & LAY( _
i).LayerName & "]"
System.Windows.Forms.Application.DoEvents()
Input(fn, LAY(i).LineWidth)
Input(fn, LAY(i).LineType)
Input(fn, tmp)
LAY(i).LineColor = System.Drawing.ColorTranslator.FromOle(tmp)
Input(fn, tmp)
LAY(i).FillColor = System.Drawing.ColorTranslator.FromOle(tmp)
Input(fn, tmp)
LAY(i).NameColor = System.Drawing.ColorTranslator.FromOle(tmp)
Input(fn, LAY(i).KurzBeschreibung)
Input(fn, LAY(i).Obergrenze)
Input(fn, LAY(i).Untergrenze)
Input(fn, LAY(i).KurzbeschreibungVisible)
Input(fn, LAY(i).Transparent)
Input(fn, LAY(i).Visible)
ReDim LAY(i).Coordinates(0)
Dim tmpkoordinate As String
Do
tmpkoordinate = LineInput(fn)
If tmpkoordinate = "----------" Then
Exit Do
Else
ReDim Preserve LAY(i).Coordinates(LAY( _
i).Coordinates.GetUpperBound(0) + 1)
LAY(i).Coordinates(LAY(i).Coordinates.GetUpperBound(0)).X1 _
= CtoP(tmpkoordinate.Substring(0, 14))
LAY(i).Coordinates(LAY(i).Coordinates.GetUpperBound(0)).Y1 _
= CtoP(tmpkoordinate.Substring(15, 14))
LAY(i).Coordinates(LAY(i).Coordinates.GetUpperBound(0)).X2 _
= CtoP(tmpkoordinate.Substring(30, 14))
LAY(i).Coordinates(LAY(i).Coordinates.GetUpperBound(0)).Y2 _
= CtoP(tmpkoordinate.Substring(45, 14))
End If
Loop
Next i 3) kann man mit vb2005 irgendwie Textdateien komprimieren? Früher gab es eine clsHuffman, aber die habe ich für VB2005 noch nirgends entdeckt.
DANKE!!!!
LG,
Andi |