GDI Problem mit anderer Positionierung eines Rectangles (TextureBrush)

  • VB.NET

SSL ist deaktiviert! Aktivieren Sie SSL für diese Sitzung, um eine sichere Verbindung herzustellen.

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von asusdk.

    GDI Problem mit anderer Positionierung eines Rectangles (TextureBrush)

    Hallo an alle,

    ich habe aktuell ein (meiner meinung nach) komisches Problem und Zwar:

    Folgender Code Funktioniert:

    VB.NET-Quellcode

    1. Dim UploadIconRect As Rectangle = New Rectangle(0, 0, 25, 25)
    2. Dim UploadIMGBrush As TextureBrush = New TextureBrush(CType(My.Resources.Upload, Bitmap), UploadIconRect)
    3. e.Graphics.FillRectangle(UploadIMGBrush, New Rectangle(0, 0, 25, 25))
    4. UploadIMGBrush.Dispose()


    aber ich komme nicht dahinter wie ich dieses Rectrangel statt auf 0,0 auf 0,32 füllen kann,

    mit :

    VB.NET-Quellcode

    1. Dim UploadIconRect As Rectangle = New Rectangle(0, 0, 25, 25)
    2. Dim UploadIMGBrush As TextureBrush = New TextureBrush(CType(My.Resources.Upload, Bitmap), UploadIconRect)
    3. e.Graphics.FillRectangle(UploadIMGBrush, New Rectangle(0, 32, 25, 25))
    4. UploadIMGBrush.Dispose()


    ist das Bild "zerissen" (soll ein normaler Pfeil sein, bild liegt als .png vor)



    mit :

    VB.NET-Quellcode

    1. Dim UploadIconRect As Rectangle = New Rectangle(0, 32, 25, 25)
    2. Dim UploadIMGBrush As TextureBrush = New TextureBrush(CType(My.Resources.Upload, Bitmap), UploadIconRect)
    3. e.Graphics.FillRectangle(UploadIMGBrush, New Rectangle(0, 32, 25, 25))
    4. UploadIMGBrush.Dispose()


    schmeisst er mir schlicht und ergreifend eine OutOfMemory exception...

    sieht einer meinen Denkfehler ?


    Greets und Danke
    Bilder
    • fail.JPG

      9,28 kB, 144×84, 55 mal angesehen
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    @asusdk Ohne das jetzt nachzuvollziehen, wenn Du y veränderst, liegt das neue ja außerhalb des ursprünglichen Rechtecks.
    Taste Dich ran, in dem Du die Werte in kleinen Schritten veränderst.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    Ich hab bereits ettliche "konfigurationen" getestet, und auch google ließ mich im Stich ^^ ich müsste eigentlich nur dahinter kommen wie ich ein Rectangle auf beliebiger Position auf der Form mit dem gewünschten Bild befüllen kann, die einzige Option die ich aktuell als alternative sehen würde wäre für jeden der 2 Pfeile ein eigenes Usercontrol zu erstellen, aber das ist ja irgendwie an der Sache vorbei gedacht oder nicht ?

    Edit: hat sich erledigt, auch mit "gezeichneten" Images ist Transparencykey" absolut unsauber... werd ich wohl doch was mit hintergrund machen müssen.. schade

    Trotzdem Danke
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

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

    @ErfinderDesRades

    Nein müsste es nicht direkt, ich habe im Prinzip nach einem Weg gesucht eine Form transparent zu machen (Transparencykey) und auf dieser dann etwas zu zeichnen, mit graphics DrawImage hatte ich es davor bereits versucht, aber halt unsaubere Ränder an den Bildern, daher hatte ich die Hoffnung das es mit einem Texturebrush sauberer sein könnte, was leider auch nicht der Fall ist... Daher musste ich dann doch meinen Plan verwerfen und eine Form mit hintergrund nehmen.

    Dennoch Danke für den Tipp =)
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If