1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Visual Basic durchsichtiges Overlay-bild

Discussion in 'Programmieren' started by MastrofDesastr, Jan 10, 2010.

Thread Status:
Not open for further replies.
  1. Hallo Leute
    Ich bastel mir grad nen kleines Programm, bei dem es darum geht viele Bilder übersichtlich abrufen zu können. allerdings möchte ich auf Useranfrage Zusatzinformationen einblenden lassen.
    Dazu denke ich mal nehme ich für den Hintergrund eine Imagebox mit dem Bild. Jetzt kommen aber die Probleme:

    1. Wie kann ich ein durchsichtiges png darberlegen auf dem nur die zusatzinformationen sind?????

    2. und wo wir grad dabei sind gibt es ne möglichkeit alle benötigten bilder statt direkt in der .exe in eine .dll oder so auszulagern?

    3. Zusatzfrage: bei mir klappt das irgendwie nicht in eine Imagebox auf knopfdruck ein anderes Bild zu laden...weiß jemand was darüber?


    btw. ich benutzte Visual Studio 2010 Beta

    Wenn mir da jemand helfen könnte wär das genial...
     
  2. VB-Coder

    VB-Coder Megabyte

    1. du setzt das "normale Bild" als Backgroundimage und das Bild mit den Zusatzinformationen (png File) als "normales" Image in der PictureBox

    2. Ja du erstellst dir eine DLL (Datei - neues Projekt - Klassenbibliothek)
    dann packste da entsprechend eine ImageList rein, in die du deine Bilder lädst.

    3. Zeig mal deinen Code dann kann man dir da bestimmt auch helfen. Ohne zu wissen wo du ggf. den Fehler machst wird es schwer dir zu helfen. Also Code bitte ;)
     
  3. Also das klingt ja ganz leicht... aber das prob ist ich möchte auch mehrere von diesen Eigenschaften bildern stapeln können, sodass mehrere auf einmal angezeigt werden...
    Zum Code ich hab hier den einfach zugäglichen Code:

    Code:
    Public Class Jangan
    
        Private Sub Jangan_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
        End Sub
    
        Private Sub MonsterToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MonsterToolStripMenuItem.Click
            PictureBox1.Hide()
            PictureBox2.Show()
            PictureBox3.Hide()
            PictureBox4.Hide()
        End Sub
    
        Private Sub NormalToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NormalToolStripMenuItem.Click
            PictureBox1.Show()
            PictureBox2.Hide()
            PictureBox3.Hide()
            PictureBox4.Hide()
        End Sub
    
        Private Sub UniqueSpawnToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UniqueSpawnToolStripMenuItem.Click
            PictureBox1.Hide()
            PictureBox2.Hide()
            PictureBox3.Show()
            PictureBox4.Hide()
        End Sub
    
        Private Sub JanganNPCToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles JanganNPCToolStripMenuItem.Click
            PictureBox1.Hide()
            PictureBox2.Hide()
            PictureBox3.Hide()
            PictureBox4.Show()
        End Sub
    End Class
    das mit dem einen Bild darüber laden würd ich wohl hinbekommen^^

    Das Problem ist, das ich zwar schonmal den Designcoden von nem Form geöffnet habe, aber leider nicht mehr weiß wie sodas ich den hier jetzt nicht posten kann.

    und ne kurze einweiung vlt: wie mache ich das mit der Imagelist?

    nich lachen bidde, bin noch total nooby dabei, hab grad erst mit VB angefangen...

    Edit:
    hab den Designer übern Umweg gefunden:
    Code:
    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    Partial Class Jangan
        Inherits System.Windows.Forms.Form
    
        'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
        <System.Diagnostics.DebuggerNonUserCode()> _
        Protected Overrides Sub Dispose(ByVal disposing As Boolean)
            Try
                If disposing AndAlso components IsNot Nothing Then
                    components.Dispose()
                End If
            Finally
                MyBase.Dispose(disposing)
            End Try
        End Sub
    
        'Wird vom Windows Form-Designer benötigt.
        Private components As System.ComponentModel.IContainer
    
        'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
        'Das Bearbeiten ist mit dem Windows Form-Designer möglich.  
        'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
        <System.Diagnostics.DebuggerStepThrough()> _
        Private Sub InitializeComponent()
            Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Jangan))
            Me.MenuStrip1 = New System.Windows.Forms.MenuStrip()
            Me.NormalToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
            Me.MonsterToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
            Me.UniqueSpawnToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
            Me.JanganNPCToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
            Me.PictureBox4 = New System.Windows.Forms.PictureBox()
            Me.PictureBox3 = New System.Windows.Forms.PictureBox()
            Me.PictureBox2 = New System.Windows.Forms.PictureBox()
            Me.PictureBox1 = New System.Windows.Forms.PictureBox()
            Me.MenuStrip1.SuspendLayout()
            Me.SuspendLayout()
            '
            'MenuStrip1
            '
            Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.NormalToolStripMenuItem, Me.MonsterToolStripMenuItem, Me.UniqueSpawnToolStripMenuItem, Me.JanganNPCToolStripMenuItem})
            Me.MenuStrip1.Location = New System.Drawing.Point(0, 0)
            Me.MenuStrip1.Name = "MenuStrip1"
            Me.MenuStrip1.Size = New System.Drawing.Size(804, 24)
            Me.MenuStrip1.TabIndex = 0
            Me.MenuStrip1.Text = "MenuStrip1"
            '
            'NormalToolStripMenuItem
            '
            Me.NormalToolStripMenuItem.Name = "NormalToolStripMenuItem"
            Me.NormalToolStripMenuItem.Size = New System.Drawing.Size(59, 20)
            Me.NormalToolStripMenuItem.Text = "Normal"
            '
            'MonsterToolStripMenuItem
            '
            Me.MonsterToolStripMenuItem.Name = "MonsterToolStripMenuItem"
            Me.MonsterToolStripMenuItem.Size = New System.Drawing.Size(63, 20)
            Me.MonsterToolStripMenuItem.Text = "Monster"
            '
            'UniqueSpawnToolStripMenuItem
            '
            Me.UniqueSpawnToolStripMenuItem.Name = "UniqueSpawnToolStripMenuItem"
            Me.UniqueSpawnToolStripMenuItem.Size = New System.Drawing.Size(105, 20)
            Me.UniqueSpawnToolStripMenuItem.Text = "Tiger Girl Spawn"
            '
            'JanganNPCToolStripMenuItem
            '
            Me.JanganNPCToolStripMenuItem.Name = "JanganNPCToolStripMenuItem"
            Me.JanganNPCToolStripMenuItem.Size = New System.Drawing.Size(83, 20)
            Me.JanganNPCToolStripMenuItem.Text = "Jangan NPC"
            '
            'PictureBox4
            '
            Me.PictureBox4.Dock = System.Windows.Forms.DockStyle.Fill
            Me.PictureBox4.Image = Global.S0n1cWorks.My.Resources.Resources.Jangan_NPC
            Me.PictureBox4.Location = New System.Drawing.Point(0, 24)
            Me.PictureBox4.Name = "PictureBox4"
            Me.PictureBox4.Size = New System.Drawing.Size(804, 601)
            Me.PictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
            Me.PictureBox4.TabIndex = 4
            Me.PictureBox4.TabStop = False
            Me.PictureBox4.Visible = False
            '
            'PictureBox3
            '
            Me.PictureBox3.Dock = System.Windows.Forms.DockStyle.Fill
            Me.PictureBox3.Image = Global.S0n1cWorks.My.Resources.Resources.Jangan_TG
            Me.PictureBox3.Location = New System.Drawing.Point(0, 24)
            Me.PictureBox3.Name = "PictureBox3"
            Me.PictureBox3.Size = New System.Drawing.Size(804, 601)
            Me.PictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
            Me.PictureBox3.TabIndex = 3
            Me.PictureBox3.TabStop = False
            Me.PictureBox3.Visible = False
            '
            'PictureBox2
            '
            Me.PictureBox2.Dock = System.Windows.Forms.DockStyle.Fill
            Me.PictureBox2.Image = Global.S0n1cWorks.My.Resources.Resources.trsilkroad_Jangan
            Me.PictureBox2.Location = New System.Drawing.Point(0, 24)
            Me.PictureBox2.Name = "PictureBox2"
            Me.PictureBox2.Size = New System.Drawing.Size(804, 601)
            Me.PictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
            Me.PictureBox2.TabIndex = 2
            Me.PictureBox2.TabStop = False
            Me.PictureBox2.Visible = False
            '
            'PictureBox1
            '
            Me.PictureBox1.Dock = System.Windows.Forms.DockStyle.Fill
            Me.PictureBox1.Image = Global.S0n1cWorks.My.Resources.Resources.Jangan_normal
            Me.PictureBox1.Location = New System.Drawing.Point(0, 24)
            Me.PictureBox1.Name = "PictureBox1"
            Me.PictureBox1.Size = New System.Drawing.Size(804, 601)
            Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
            Me.PictureBox1.TabIndex = 1
            Me.PictureBox1.TabStop = False
            Me.PictureBox1.Visible = False
            '
            'Jangan
            '
            Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
            Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
            Me.BackColor = System.Drawing.SystemColors.ActiveCaptionText
            Me.ClientSize = New System.Drawing.Size(804, 625)
            Me.Controls.Add(Me.PictureBox4)
            Me.Controls.Add(Me.PictureBox3)
            Me.Controls.Add(Me.PictureBox2)
            Me.Controls.Add(Me.PictureBox1)
            Me.Controls.Add(Me.MenuStrip1)
            Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
            Me.MainMenuStrip = Me.MenuStrip1
            Me.MinimumSize = New System.Drawing.Size(820, 663)
            Me.Name = "Jangan"
            Me.ShowIcon = False
            Me.Text = "Jangan"
            Me.MenuStrip1.ResumeLayout(False)
            Me.MenuStrip1.PerformLayout()
            Me.ResumeLayout(False)
            Me.PerformLayout()
    
        End Sub
        Friend WithEvents MenuStrip1 As System.Windows.Forms.MenuStrip
        Friend WithEvents NormalToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
        Friend WithEvents MonsterToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
        Friend WithEvents UniqueSpawnToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
        Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
        Friend WithEvents PictureBox2 As System.Windows.Forms.PictureBox
        Friend WithEvents PictureBox3 As System.Windows.Forms.PictureBox
        Friend WithEvents JanganNPCToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
        Friend WithEvents PictureBox4 As System.Windows.Forms.PictureBox
    End Class
    
     
    Last edited: Jan 10, 2010
  4. VB-Coder

    VB-Coder Megabyte

    Okay wenn ich das richtig verstanden habe, willst du eine PictureBox haben. In dieser dann durch einen Button das Bild darin wechseln können. Dann soll der User noch auswählen können, ob er "Zusatzinformationen" sehen will oder nicht. Richtig soweit ? Falls nein korregier mich.

    Das wäre dann also vereinfacht gesagt ein Bildbetrachter mit "Blätterunktion"

    Falls ich irgendwas falsch verstanden habe, dann erklär mal bitte ganz genau, was das Endziel ist.


    Wenn es das ist, was du willst, dann bastel ich dir (wenn ich die Zeit dazu finde) mal ein kommentiertes Beispiel zusammen.
     
  5. Also im grunde genommen ist das genau das, allerdings muss es halt möglich sein mehrere info layer üBereinander zu stapeln..

    Wenn du da ein kommentierts beispiel schreiben könntest wär das echt klasse!!!!!!!

    Vielen Dank schon mal im vorraus!!:danke::danke::danke:
     
  6. So auch wenn VB-Coder angeboten hat einen Quellcode zu schreiben, bin ich auch f&#252;r kleinere Tipps offen, die nur Teile der Probleme behandeln...

    MfG Mastrof D.
     
  7. VB-Coder

    VB-Coder Megabyte

    Ja ich bin noch nicht dazu gekommen. (Stress)
    Am Wochenende werd ich mich dem ganzen mal annehmen.
     
  8. jojo kein eile ;-)
     
  9. und schon was bei rausgekommen?
     
  10. hat denn keiner eine Idee ob das m&#246;glich ist?
     
  11. VB-Coder

    VB-Coder Megabyte

    Also ich hatte gerade mal ein paar Minuten Zeit und hab das mal probiert.
    Einen Infolayer drüber legen ist kein Problem. Denn man kann ja das eigentliche Bild in der Picturebox als Background Image deklarieren und den Infolayer dann entsprechend als normales Image zuweißen.

    Nur liegt das eigentliche Problem in der Sache, das du mehrere Infolayer haben möchtest. Was dann bedeuten würde du musst eine zweite Picturebox darüber setzen. Aber selbst wenn du deren Background Color auf Transparent setzt, funktioniert das ganze nicht. Ich grübel zwar noch warum, aber bis jetzt ist das für mich noch nicht schlüssig.

    Wenn mir eine Lösung einfällt, lasse ich es dich wissen ;)


    Alternativ könntest du es doch so wie oben gesagt machen und die Infos dann entsprechend alle in einem Layer unterbringen, oder geht das aus irgendwelchen wichtigen Gründen nicht ? Falls dem so ist, warum blendest du die Infolayer nicht außerhalb des Bildes ein ?
     
  12. Also im grunde genommen w&#252;rde das warscheinlich gehen, das problem ist dann nur das i h diese riesigen bilder mit infos (vor allem da ich ja dann alle kombinationen in Bildern eibinden muss) in der exe parken muss wodurch die fatei so rieig wird -,- aber f&#252;r den anfang w&#252;rde es wohl gehen... Jetzt muss ich allerdings herausfinden wie ich eine passende dll schreibe in der die bildr untergebracht werden k&#246;nnen

    aber schonmal danke f&#252;r die bisherigen infos
     
  13. Also ich wei&#223; das das jetzt ein bisschen langen gedauert hat, aber ich hab das jetzt mal getestet, die zusatzinfos per Bild in der Imagebox in der das Hauptbild als backgroundImage deklariert ist. Es klappt!
    Das Problem ist das ich f&#252;r jedes Bild 6 verschiedene Zusatzinfos habe die ich unabh&#228;ngig voneinander intuitiv einblenden m&#246;chte, das sind einfach zuviele um sie alle in Bildern zusammenzufassen.

    Au&#223;erdem konnte ich bisher nicht herausfinden, wie ich eine dll schreibe in der die ganzen Grafiken/Bilder zusammengefasst werden....

    vlt kann mir hier ja mal jemand was dazu sagen?
     
  14. VB-Coder

    VB-Coder Megabyte

    Die Frage die sich stellt: Warum müssen die Zusatzinfos unbedingt auch als Bild eingebunden werden ? Kann man da nicht normale Text-Label mit transparentem Hintergrund nutzen ? Diese beim Programmstart auf unsichtbar stellen und wenn gewünscht einfach die sichtbarkeit entsprechend umstellen... Dann kannst du 1000 Zusatzinfos unterbringen wenn du den Platz hast.

    Zum DLL Problem Google

    Wobei DLL auch nicht die Lösung auf alle Fragen sein muss. Denn die DLL wird ja bei Bedarf separat geladen bzw. darauf zugegriffen. Daher stellt sich die Frage was in dem Falle sinnvoller ist. Den Speicherplatz Verbrauch hast du sowieso. Ob die Bilder nun in der EXE oder DLL stecken. Denn die DLL musst du ja auch mit deinem Programm ausliefern. Es wäre also zu testen in wie weit sich da ein Unterschied bemerkbar macht bei deinem speziellen Vorhaben.
     
  15. Also der Vorteil durch die dll w&#228;re das die User sich dann beispielsweise eigene Skins erstellen k&#246;nnten...
    und ich hab da eine menge kartenmaterial das des &#246;fteren geupdated werden muss, dann k&#246;nnte man einfach einen neue dll zur verf&#252;gung stellen sodass man dann nicht eine ganz neue exe generiert werden muss


    Edit:
    Also ich hab mich tats&#228;chlich erfolgreich dazu informieren k&#246;nnen wie man dlls erstellt importiert, was mir aber immer noch nicht klar ist, wie ich jetzt die Grafiken Bilder in die dll einbaue, sodass ich sie sp&#228;ter aus ihr heraus in meinem Form abrufen kann (und ohne da die ich die Bilder noch extra zur verf&#252;gung stelle(klingt das &#252;berhaupt noch logisch?)).
     
    Last edited: Feb 24, 2010
  16. VB-Coder

    VB-Coder Megabyte

    Du hast dir eine neue Klassenbibliothek erstellt

    also hast du jetzt rechts im "Projekt Explorer" Fenster folgende Einträge

    Class Library1
    |_ My Project
    |_Class1.vb

    Wenn du jetzt einen Doppelklick auf "My Project" machst, öffnet sich das Fenster wo du die benötigten Einstellungen vornehmen kannst.

    Du hast da jetzt folgende Auswahlpunkte

    Anwendung
    Kompilieren
    ...


    Was dich interessiert ist der Punkt Ressourcen. Den klickst du an.
    Jetzt hast du im oberen Teil "Zeichenfolgen" | Ressource hinzufügen | ...

    Du klickst auf "Ressource hinzufügen" (Auf den Pfeil daneben !) , dann auf "Vorhandene Datei hinzufügen"

    Nun wählst du deine Grafiken aus (mit gedrückter Umschalt bzw. Strg Taste kannst du mehrere Dateien auswählen). Dann klickst du auf öffnen.

    Und ohhh Wunder die Grafiken wurden als Ressource in dein Projekt eingebunden ;)

    Damit ist die Frage, wie bekomme ich die Bilder in die DLL grundlegend beantwortet.
     
  17. jaaa klasse danke jetzt muss ich mal schauen wie ich sie in meinem form abrufe :D :D das werde ich mir mal morgen im Informatikunterricht zu gem&#252;te f&#252;hren :D


    Schonmal :danke: daf&#252;r !!!!!!!!!!!!!!!!!!!!!!!!!!
     
  18. So ich habs mal getestet und so doof es klingt ich hab keine Ahnung, wie ich jetzt eine Resource aus der dll abrufe... :(
    wenn die Resource in der exe direkt liegt reicht ja der einfache Pfad:
    Global.WindowsApplication1.My.Resources.Resources.Bildname

    gibt es bei der dll eine &#228;hnliche L&#246;sung??
     
  19. Wei&#223; jemand wie ich die Resourcen einer dll nutzen kann?
    Die Frage ist also, wie kann ich ein Bild aus der dll in eine Picturebox in der WinForm Anwendung laden?
     
Thread Status:
Not open for further replies.

Share This Page