Hallo Ihr Lieben,
Ich bin hier neu, da auf anderen unpassende Forum nicht mir weiterhelfen kann...
Ich habe aber viele Erfahrungen bei andere Sprache wie GML, PHP und CSS und daher will ich VB.NET und in Zukunft C# lernen. Ich hoffe mal, das ich auch bald eine teil der Community von dieser Forum gehöre.
Da ich eine Level Editor für mein Spiel brauche, habe ich mir gedacht, das ich mir eins in Visual Basic erstellen werde. Zwar habe ich viele Erfahrungen mit Textdateien/INI-Dateien mit Visual Basic, aber mit Grafiken zeichen jedoch noch nicht Ich habe zirka 1 Woche lang um dieser Problen gekümmert und leider habe ich es nicht geschafft. Daher Frage ich mal hier.
Frage Nummer Eins: Wie kann ich e.Graphics.DrawRectangle und e.Graphics.FillRectangle immer updaten, wenn ich mittere Mausbutton klicke? Zwar habe ich es mit Refresh gemacht und es funktioniert zwar, aber dann kommt dieser "Transparent/Weißer" Flackern:
Ich bin hier neu, da auf anderen unpassende Forum nicht mir weiterhelfen kann...
Ich habe aber viele Erfahrungen bei andere Sprache wie GML, PHP und CSS und daher will ich VB.NET und in Zukunft C# lernen. Ich hoffe mal, das ich auch bald eine teil der Community von dieser Forum gehöre.
Da ich eine Level Editor für mein Spiel brauche, habe ich mir gedacht, das ich mir eins in Visual Basic erstellen werde. Zwar habe ich viele Erfahrungen mit Textdateien/INI-Dateien mit Visual Basic, aber mit Grafiken zeichen jedoch noch nicht Ich habe zirka 1 Woche lang um dieser Problen gekümmert und leider habe ich es nicht geschafft. Daher Frage ich mal hier.
Frage Nummer Eins: Wie kann ich e.Graphics.DrawRectangle und e.Graphics.FillRectangle immer updaten, wenn ich mittere Mausbutton klicke? Zwar habe ich es mit Refresh gemacht und es funktioniert zwar, aber dann kommt dieser "Transparent/Weißer" Flackern:
Auch Invalidate() und Update() bringt nicht weiter.
Hinter dieser Box ist eine "Panel" versteckt. Panel sollte mir nur als Hilfswerkzeug für dieser Grafik helfen. Mir ist es schon klar, das ich auch das ganzer in Variable speichern kann. Aber bei mehreren Tabs ist es schon etwas blöd.
Code:
Spoiler anzeigen
Frage Nummer Zwei: Für Level Editor habe ich mehrere Tabs zur Verfügung. Wie kann ich beim neue Tab erstellen neue Grafiken erstellen? Ich würde gern für jeden Tab eine neue Grafiken (siehe oben bei Animations-Bild) einfügen
Code, zum neue Tab erstellen:
Spoiler anzeigen
Frage Nummer Drei: Wie kann ich ein Code bei einer aktiven Tab ausführen? Bislang habe ich nur mit einer Tab gearbeitet.
Code:
Spoiler anzeigen
Blöderweiße gibt es wie "TabControl1.SelectedTab.MouseDown" oder "TabControl1.SelectedTab.Paint" gar nicht
Frage Nummer Vier: Wie kann ich beu neu erstellten Panel (die bei jeden Tab vorkommen) mit Grafiken verknüpfen?
Nennen wir mal eine Beispiel:
dieser "TabControl1.SelectedTab.Panel." soll Panel herausfinden, die auf dem TabPage erstellt wurde. Leider gibt es ja dieser Funktion praktisch auf VB.NET nicht.
Wenn ihr nicht verstanden habt - fragt mich nochmal. Ich werde nochmal die Mühe geben, erneut zu Erklären/Fragen.
Rechtschreibung könnt ihr jedoch behalten.
Liebe fette Grüße,
Chinafreak
Hinter dieser Box ist eine "Panel" versteckt. Panel sollte mir nur als Hilfswerkzeug für dieser Grafik helfen. Mir ist es schon klar, das ich auch das ganzer in Variable speichern kann. Aber bei mehreren Tabs ist es schon etwas blöd.
Code:
VB.NET-Quellcode
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Timer1.Interval = 1
- Timer1.Start()
- Panel1.Visible = False
- End Sub
- Private Sub TabPage1_MouseDown(sender As Object, e As EventArgs) Handles TabPage1.MouseDown
- If MouseButtons = Windows.Forms.MouseButtons.Middle Then
- GlobalVariables.PanelX = Panel1.Location.X - Form1.MousePosition.X
- GlobalVariables.PanelY = Panel1.Location.Y - Form1.MousePosition.Y
- End If
- End Sub
- Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
- If MouseButtons = Windows.Forms.MouseButtons.Middle Then
- Dim XX As Integer = GlobalVariables.PanelX + Form1.MousePosition.X
- Dim YY As Integer = GlobalVariables.PanelY + Form1.MousePosition.Y
- Panel1.Location = New Point(XX, YY)
- End If
- End Sub
- Private Sub TabPage1_Paint(sender As Object, e As PaintEventArgs) Handles TabPage1.Paint
- Dim c As Color = Color.FromArgb(75, 0, 0, 0)
- Dim graphic As Graphics = Me.CreateGraphics
- With e.Graphics
- Dim ShadowPen As New Pen(c, 16)
- .DrawRectangle(ShadowPen, New Rectangle(Panel1.Location.X + 16, Panel1.Location.Y + 16, Panel1.Width - 16, Panel1.Height - 16))
- Dim myBrush As New System.Drawing.SolidBrush(System.Drawing.Color.DodgerBlue)
- .FillRectangle(myBrush, New Rectangle(Panel1.Location.X, Panel1.Location.Y, Panel1.Width, Panel1.Height))
- Dim blackPen As New Pen(Color.Black, 3)
- .DrawRectangle(blackPen, New Rectangle(Panel1.Location.X, Panel1.Location.Y, Panel1.Width, Panel1.Height))
- End With
- End Sub
Frage Nummer Zwei: Für Level Editor habe ich mehrere Tabs zur Verfügung. Wie kann ich beim neue Tab erstellen neue Grafiken erstellen? Ich würde gern für jeden Tab eine neue Grafiken (siehe oben bei Animations-Bild) einfügen
Code, zum neue Tab erstellen:
VB.NET-Quellcode
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Dim myTabPage As New TabPage()
- myTabPage.Text = "Unsaved Level " & (TabControl1.TabPages.Count + 1)
- TabControl1.TabPages.Add(myTabPage)
- myTabPage.BackColor = Color.White
- myTabPage.BackgroundImage = My.Resources.background
- myTabPage.ImageIndex = "0"
- Dim mypanel As New Panel()
- mypanel.Parent = myTabPage
- End Sub
Frage Nummer Drei: Wie kann ich ein Code bei einer aktiven Tab ausführen? Bislang habe ich nur mit einer Tab gearbeitet.
Code:
VB.NET-Quellcode
- Private Sub TabPage1_MouseDown(sender As Object, e As EventArgs) Handles TabPage1.MouseDown
- If MouseButtons = Windows.Forms.MouseButtons.Middle Then
- GlobalVariables.PanelX = Panel1.Location.X - Form1.MousePosition.X
- GlobalVariables.PanelY = Panel1.Location.Y - Form1.MousePosition.Y
- End If
- End Sub
- Private Sub TabPage1_Paint(sender As Object, e As PaintEventArgs) Handles TabPage1.Paint
- Dim c As Color = Color.FromArgb(75, 0, 0, 0)
- With e.Graphics
- Dim ShadowPen As New Pen(c, 16)
- .DrawRectangle(ShadowPen, New Rectangle(Panel1.Location.X + 16, Panel1.Location.Y + 16, Panel1.Width - 16, Panel1.Height - 16))
- Dim myBrush As New System.Drawing.SolidBrush(System.Drawing.Color.DodgerBlue)
- .FillRectangle(myBrush, New Rectangle(Panel1.Location.X, Panel1.Location.Y, Panel1.Width, Panel1.Height))
- Dim blackPen As New Pen(Color.Black, 3)
- .DrawRectangle(blackPen, New Rectangle(Panel1.Location.X, Panel1.Location.Y, Panel1.Width, Panel1.Height))
- End With
- End Sub
Blöderweiße gibt es wie "TabControl1.SelectedTab.MouseDown" oder "TabControl1.SelectedTab.Paint" gar nicht
Frage Nummer Vier: Wie kann ich beu neu erstellten Panel (die bei jeden Tab vorkommen) mit Grafiken verknüpfen?
Nennen wir mal eine Beispiel:
dieser "TabControl1.SelectedTab.Panel." soll Panel herausfinden, die auf dem TabPage erstellt wurde. Leider gibt es ja dieser Funktion praktisch auf VB.NET nicht.
Wenn ihr nicht verstanden habt - fragt mich nochmal. Ich werde nochmal die Mühe geben, erneut zu Erklären/Fragen.
Rechtschreibung könnt ihr jedoch behalten.
Liebe fette Grüße,
Chinafreak