Avatar billede fyrsten25 Praktikant
29. oktober 2014 - 16:00 Der er 22 kommentarer og
1 løsning

Billeder uden baggrund

Hej

Jeg har en del billeder, som jeg har fjernet baggrunden på med photoshop. Dem skal jeg bruge i visual basic, men når jeg tilføjer dem, så danner programmet en baggrund som passer til rammen på "image-rammen". Dette vil jeg gerne undgå, da billeder derfor kommer til at overskygge hinanden.

Er der en mulighed for, at man kan tilføje billederne, så de ikke nødvendigvis skal være firkantede, eller bare ikke får tilføjet en baggrund?

På fårhånd tak!
Avatar billede chrisrj Forsker
29. oktober 2014 - 16:37 #1
Prøv at ændre baggrundsfarven til transparant.
Avatar billede fyrsten25 Praktikant
29. oktober 2014 - 16:41 #2
Har jeg prøvet og desværre uden held.
Avatar billede chrisrj Forsker
29. oktober 2014 - 17:19 #3
På både billede og din "image-ramme"?
Avatar billede Lene Fredborg Ekspert
29. oktober 2014 - 17:23 #4
Hvis det gælder Word:
Billeder bliver altid behandlet som firkantede, medmindre ombrydning er sat til Tæt (Tight) eller Igennem (Through). Forudsætningen for, at disse indstillinger har effekt, er, at der er transparente områder langs yderkanterne. Desuden skal afstanden fra tekst til indhold i billedet styres via parametre.

Markeret billede ændret til ombrydning henholdsvis Tæt og Igennem i VBA:
Selection.ShapeRange(1).WrapFormat.Type = wdWrapTight
Selection.ShapeRange(1).WrapFormat.Type = wdWrapThrough
Avatar billede fyrsten25 Praktikant
29. oktober 2014 - 22:02 #5
#chrisrj
Ja begge.

#lene-fredborg

Kan ikke helt få det til at fungere det du skriver, men er heller ikke helt sikker på jeg har forklaret mit problem godt nok.

Billedet her under viser en ko og dens anatomi. Det er meningen jeg skal gøre hvert enkelt del til et link/click som fører til en handling. Dette fungerer ret godt i powerpoint hvor jeg på en måde kan undgå billedet bliver til en firkant og laver en hvid baggrund. Det samme gælder også at de ikke lapper ind over hinanden når man trykker på dem. Hvis der er en anden måde det kan løses på lutter jeg selvfølgelig også øre.

http://www.billedeupload.dk/images/6egdH.png
Avatar billede Lene Fredborg Ekspert
29. oktober 2014 - 23:09 #6
Er det PowerPoint, det skal virke i? Eller er det Word? Eller?
Avatar billede fyrsten25 Praktikant
29. oktober 2014 - 23:48 #7
Det er visual basic form application.
Avatar billede Lene Fredborg Ekspert
29. oktober 2014 - 23:58 #8
Jo, men hvilket Office-program programmerer du til i VBA?
Avatar billede fyrsten25 Praktikant
30. oktober 2014 - 09:42 #9
Jeg programmerer ikke til et andet program i officepakken, men i stedet et program fra bunden. Det kan være det er det forkerte forum så?
Avatar billede chrisrj Forsker
30. oktober 2014 - 10:16 #10
Foraet kan godt passe - det kommer an på, om du koder i vb6, også kaldet vb classic, eller om du koder i vb.net. :)

Hvis det er vb.net, er der en kategori til det: http://www.eksperten.dk/spm/Programmering/Visual-Basic-NET/ :)
Avatar billede Lene Fredborg Ekspert
30. oktober 2014 - 11:07 #11
Du skrev tidligere, at det var "visual basic form application". Jeg antog, at du mente "Visual Basic for Applications", også kaldet VBA. VBA knytter sig til de enkelte Office-programmer. Objektmodellerne i de forskellige programmer er forskellige, så samme kode vil ikke virke i f.eks. Word og Excel.

Det, jeg skrev vedr. VBA, var relateret til Word. Ud fra dit uploadede billede forestiller jeg mig, at det, du vil opnå, er, at billedet kan ligge under noget andet, som kan overlappe det helt eller delvis. I Word kan du få et billede til at ligge bag andet (andre objekter eller tekst) med ombrydning Bag ved tekst (Behind Text). En line svarende til de andre VBA-linjer vil da se sådan ud:

Selection.ShapeRange(1).WrapFormat.Type = wdWrapBehind

Jeg ved ikke, om det hjælper dig.
Avatar billede chrisrj Forsker
30. oktober 2014 - 11:20 #12
Lene: Form er det man kalder et vindue i kode termer. Men ved du ikke det, kan jeg godt forstå at du tror det er en stavebøf. :)
Avatar billede fyrsten25 Praktikant
30. oktober 2014 - 11:45 #13
Nej, som chrisrj skriver, så er det ikke "for application", men VB classic  "form app". Kan selvfølgelig godt være jeg skal overveje bare, at lave programmet gennem PP.
Avatar billede Lene Fredborg Ekspert
30. oktober 2014 - 11:58 #14
Det var din skrivemåde af navnet, der fik mig til at antage, at det var VBA, du talte om. Jeg ved hvad en form er.
Avatar billede chrisrj Forsker
30. oktober 2014 - 12:41 #15
For at vende tilbage til spørgsmålet:

Du skal lave en custom clickbox. Jeg lavede engang for 700 milioner år siden(ca.) noget lignende i vb.net.


Jeg ved ikke, om du kan bruge det til noget, men her er det:


Dim ImageArray(10, 7) As Object

Sub AddPictureBoxes()
        Dim i As Int16

        i = 0

        While i < ImageArray.GetUpperBound(0)
            Dim pb As PictureBox
            If ImageArray(i, 5) Then
                pb = CreatePictureBox(ImageArray(i, 0))
            Else
                pb = CreatePictureBox(My.Resources.NotBuilt)
            End If


            pb.Location = New Point(ImageArray(i, 1), ImageArray(i, 2))
            pb.Name = "pb" & ImageArray(i, 3)

            Me.Controls.Add(pb)

            pb.Parent = Me
            pb.BringToFront()

            AddHandler pb.MouseClick, AddressOf pb_MouseClick
            AddHandler pb.MouseEnter, AddressOf pb_MouseEnter
            AddHandler pb.MouseLeave, AddressOf pb_MouseLeave

            i += 1
        End While
    End Sub

    Sub AddSinglePictureBox(ByVal ArrPos As Int16)
        Dim pb As PictureBox

        If ImageArray(ArrPos, 5) Then
            pb = CreatePictureBox(ImageArray(ArrPos, 0))
        Else
            pb = CreatePictureBox(My.Resources.NotBuilt)
        End If


        pb.Location = New Point(ImageArray(ArrPos, 1), ImageArray(ArrPos, 2))
        pb.Name = "pb" & ImageArray(ArrPos, 3)

        Me.Controls.Add(pb)

        pb.Parent = Me
        pb.BringToFront()

        AddHandler pb.MouseClick, AddressOf pb_MouseClick
        AddHandler pb.MouseEnter, AddressOf pb_MouseEnter
        AddHandler pb.MouseLeave, AddressOf pb_MouseLeave

    End Sub

    Private Function CreatePictureBox(ByVal ImageResource As Image) As PictureBox
        Dim bmp As New Bitmap(ImageResource)
        Dim gp As New System.Drawing.Drawing2D.GraphicsPath
        Dim mask As Color = bmp.GetPixel(0, 0)

        Me.BackColor = mask

        For x As Integer = 0 To bmp.Width - 1
            For y As Integer = 0 To bmp.Height - 1
                If Not bmp.GetPixel(x, y).Equals(mask) Then
                    gp.AddRectangle(New Rectangle(x, y, 1, 1))
                End If
            Next
        Next

        Dim pb As New PictureBox

        pb.Size = bmp.Size
        pb.Image = bmp
        pb.Region = New System.Drawing.Region(gp)

        Return pb
    End Function
Avatar billede fyrsten25 Praktikant
30. oktober 2014 - 20:58 #16
Det er ikke lige helt det jeg søgte. Jeg har dog fundet en film på youtube hvor personen i videoen har lavet en knap hvor kun billedet på knappen kan trykkes på.

Det forklarer måske lidt bedre problemet.

http://www.youtube.com/watch?v=K_JzL4kzCoE
Avatar billede chrisrj Forsker
30. oktober 2014 - 21:21 #17
Det er faktisk lige det samme. :) At jeg så kalder det noget andet, er bare mit navn for det. :)

Men for lige at få det HELT på den rene: Bruger du vb6 ELLER vb.net????

Det gør en forskel. ;)
Avatar billede fyrsten25 Praktikant
30. oktober 2014 - 21:27 #18
Ok, blev lige lidt forviret :)

Jeg bruger Visual studio, men kodesproget fungerer næsten på samme måde som vb6. Har brugt VB6.
Avatar billede chrisrj Forsker
30. oktober 2014 - 22:02 #19
...så du bruger altså vb.net...? :)

Hvilken version af Visual studio har du?
Avatar billede fyrsten25 Praktikant
31. oktober 2014 - 15:01 #20
Visual studio 2013
Jeg bruger visual basic.
Avatar billede fyrsten25 Praktikant
31. oktober 2014 - 15:48 #21
Jeg har fundet en løsning nu. Jeg skal bare ind og lave en class for hvert enkelt billede.

Tak for tiden og hjælpen.
Avatar billede chrisrj Forsker
31. oktober 2014 - 16:09 #22
Visual studio 2013 kommer IKKE med vb6, men med vb.net.

vb6 har ikke klasser...

Husk at oprette spørgsmål i vb.net kategorien næste gang. :)
Avatar billede fyrsten25 Praktikant
31. oktober 2014 - 16:34 #23
Det er taget til efterretning.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester