Problem mit Picturebox

  • VB.NET
  • .NET (FX) 4.0

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von thefiloe.

    Problem mit Picturebox

    Hallo Leute, ich bins wiedermal!

    Habe aktuell bei das Vorhaben dass ich in einer Form eine Picturebox über die andere legen möchte und diese Tranparent sein sollte.
    Also zb So; Picturebox1 = [ ] , Picturebox 2 = X

    Nu sollte das Ergebnis so aussehen
    |======================|
    | [ X ] Aufgabe/Notiz |
    | .... |
    |======================|

    Nun habe ich zu diesem Zweck folgendes eigentstellt im Form.Load:

    VB.NET-Quellcode

    1. Me.Picturebox2.Parent = Me.Picturebox1
    2. Me.Picturebox2.Visible = False


    + Sowie bei beiden Pictureboxen als Background "Transparent" eingestellt. (Backgroudcolor soll von der Form mitgenommen werden)


    Wenn ich das ganze aber so ausführe, passiert nur das:

    VB.NET-Quellcode

    1. Me.Picturebox2.Visible = True



    |======================|
    | [ ] Aufgabe/Notiz |
    | .... |
    |======================|

    Also Picturebox1 wird angezeigt, sonst nichts, obwohl ich Picturebox2 ja visible mache und Picturebox 1 als "Parent" eingestellt habe.
    Auch ein

    VB.NET-Quellcode

    1. me.Picturebox2.BringToFront()
    bringt nichts...

    <X

    Irgendwer ne idee?

    LG

    Ps: Verwende VS 2010
    Moin,

    Transparenz etc. mit PictureBoxen ist imo eine etwas unschöne Sache und so geht das glaube ich auch gar nicht. Nimm für sowas GDI+.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    OK, mag schon sein das GDI+ schneller ist, muss mich dort mal einlesen. Hatte mit Transparenz noch nie Probleme, denkst du wirklich dass es an der Transparenz Einstellung liegt?

    Zitat entfernt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Das mit den PictureBoxen funktioniert so auch nicht, zumindest afaik. Habe es jedoch noch nie probiert.
    Wird das ein Spiel? Dann sollte das sowieso über GDI+ oder gar DirectX geregelt werden, alles andere ist Ranz und gibt Performance wie ein Stein. ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Danke für deine Antwort, nein wird kein Spiel sondern nur so etwas wie eine Aufgaben Checkliste

    Zitat entfernt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    v-go schrieb:

    OK, mag schon sein das GDI+ schneller ist
    Für Deinen Zweck ist eine transparente PictureBox ein NoGo.
    Falls das eine sowoeso eine PB ist, kannst Du auch 2 Bildchen generieren und in die Ressourcen packen, die Du kontextabhängig darstellst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das ist meine "Backup"-Möglichkeit, was ich eigentlich vermeiden wollte. Also habe ich keine Chance dass so mit PB hinzukriegen?

    Zitat entfernt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    was vlt. interessant sein könnte ist die Tatsache, dass PB ja 2 Bitmapse anzeigen kann: Das BackgroundImage und das Image.

    Hmm - wohl eher nicht, weil:

    v-go schrieb:

    Aufgaben Checkliste
    ist eine Sache von Datenverarbeitung - das wird mit Pictureboxen glaub ziemlich Müllig.

    Aber ich kann mir das gewünschte auch kaum vorstellen - bei mir ist PB dazu da, Pictures anzuzeigen, also unter 150*150 pix läuft da garnix. Aber dann entwickelt eine Aufgabenliste mit mw. 20 Einträgen einen recht un-useablen Platzbedarf.

    v-go schrieb:

    Das ist meine "Backup"-Möglichkeit
    Kannst Du bitte mal das Problem / die Aufgabenstellung vollständig beschreiben?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Dies war so gemeint, dass deine vorgeschlagene Lösung durch Austauschen des Images der PB (aus den Ressources), mir bereits als "Backup"-Lösung im Hinterkopf war ;)
    Ich baue mein Programm übrigens gerade so um, also das ich die Ressources der PB austausche. Wollte ich wie gesagt nicht, aber es geht gerade nicht anders , da mir die
    Zeit fehlt.

    Aber...Habt ihr vielleicht ein paar Links zu guten Tutorials für GDI+ für mich? Möchte das in zukünftigen Projekten "eleganter" und eben mit GDI lösen...
    Wär cool


    Danke euch ,
    LG

    Zitat entfernt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    v-go schrieb:

    durch Austauschen des Images der PB
    Einfach so:

    VB.NET-Quellcode

    1. Dim img As Bitmap
    2. If BEDINGUNG Then
    3. img = My.Resources.Image1
    4. Else
    5. img = My.Resources.Image2
    6. End If
    7. Me.PictureBox1.Image = img
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Die Leuts sagen immer GDI/GDI+, meinen aber OwnerDrawing.
    Also eine Architektur, die in Paint-Events mit Graphics-Objekten Zeichnungen ausführt.
    Das eigliche Zeichnen dabei ist fast keines Tutorials wert, etwa ein Bild zeichnet man mit .DrawImage, eine Linie mit .DrawLine, eine Ellipse mit .DrawEllipse usw..

    Das Anspruchsvolle am Ownerdrawing ist die Architektur, jdfs manchmal, insbes., wenn man bewegliche Figuren selber malen will. Gugge AdvancedPainting
    Hingegen verwendest du Ownerdrawing in einem DGV, dann musst du ja nur eine Zelle vollmalen, das ist simpel: coloriertes DatagridView

    Also es hängt (wie so oft) von deiner Aufgabenstellung ab, aber Fragen danach schenkst du ja keinerlei Beachtung :thumbdown:

    ErfinderDesRades schrieb:

    Die Leuts sagen immer GDI/GDI+, meinen aber OwnerDrawing [...] Also eine Architektur, die in Paint-Events mit Graphics-Objekten Zeichnungen ausführt.

    Was steckt da wohl dahinter? Jo, GDI+.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Jo, das Malen im Einzelnen geschieht mit GDI+.
    Aber GDI+ steckt nicht hinter OwnerDrawing.

    Also wenn du sagst: "Löse das mit GDI+", dann lässt du das wichtigste weg, und die Leuts fangen mit ungeeigneter Architektur an, meist mit Control.CreateGraphics(), womit sie nach einer Weile auf die Nase fallen.
    Hallo, danke für deinen Beitrag hilft mir weiter. Oje tut mir leid, dass ich die Aufgabenstellung nicht klar genug rübergebracht habe. Also es geht im wesentlichen darum, eine vordefinierte Form anzuzeigen die Platz für 10 "Aufgaben" hat die der User selbst definieren kann (nicht mehr als 10) und je nachdem wieviel aufgaben eingegeben werden (also höchstens 10 ) dann werden die jeweiligen Elemnte visible gemacht. Wenn die Aufgaben abgeschlossen wurden sollte statt eines [ ] Kästchens eben ein [ X ] erscheinen :)
    Aber wie gesagt habe ich jetzt mal durch austauschen der Image Ressource gelöst.

    Unnötiges Vollzitat entfernt.
    - Solaris

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Solaris“ ()

    v-go schrieb:

    dann werden die jeweiligen Elemnte visible gemacht
    Sieh Dir mal das TableLayoutPanel an.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    ErfinderDesRades schrieb:

    bei mir ist PB dazu da, Pictures anzuzeigen, also unter 150*150 pix läuft da garnix.

    Da hast du vollkommen recht. Sollte auch sofort in den Standard aufgenommen werden. Mit Roslyn sind Warnungen usw. eh leicht zum implementieren. Wäre ein nettes Tool, das gleich eine Warnung bei PBs < 150x150px ausspuckt.
    Sicherlich wäre es dann best practice icons usw. durch Unicodes zu ersetzen. :thumbsup:
    Heißt alles was kleiner als

    wird nicht über PBs dargestellt.

    Müsste man natürlich noch in der Foren Software anpassen, da ich die "Darstellung" von oben über
    eingefügt habe (unten die "Darstellung" des Einfügenbuttons auch Oo). Da jedoch < 150px -> trifft die Bezeichnung Bild nicht zu ?( .

    Gott wie kommt man nur auf so nen Murks?


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Tut mir leid. Ich muss noch üben, meinen Mist auf der Art trockene und nüchterne Art und Weise zu formulieren. Falls du glaubst eine Verwarnung aussprechen zu müssen, steht es dir natürlich frei das zu tun.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.