Avatar billede domino1977 Nybegynder
10. oktober 2002 - 12:45 Der er 18 kommentarer og
1 løsning

Scalering af PictureBox

jeg har et billed der bliver hentet ind i en picturebox... billedet er ALT for stort og siger jeg stretch, ja så passer den godt nok billedet ind... men selv højde og brede forholdene, de bliver jo forvrænget....

Jeg VED at i access kan man sætte den til selv at passe ind... så højde og brede forholdene for bliver det samme... MEN de passer se´lve billedet ind i boxen!

Nogen der kan hjælpe?
Avatar billede tubber Juniormester
10. oktober 2002 - 13:00 #1
Picture1.Picture = LoadPicture(App.Path & "mypic.jpg", , , x_værdi, y_værdi)

jeg ved dog ikke om x,y er i twips eller pixels.....
Avatar billede tubber Juniormester
10. oktober 2002 - 13:02 #2
Picture1.Picture.Height = y_værdi
Picture1.Picture.Width = x_værdi

også en mulighed....
Avatar billede domino1977 Nybegynder
10. oktober 2002 - 13:34 #3
Jamen hvad nu hvis jeg feks loader en A4 og bagefter en A4 liggende..... så virker det jo ikke??

Det er forskellige tegninger med forskellige dimensioner!!!
Avatar billede martin_moth Mester
10. oktober 2002 - 14:55 #4
Tag forholdet mellem højde og bredde på dit billede. Vælg hvor bredt dit billede skal være. Beregn den tilsvarende højde ud fra ovennævnte forhold.

Picture1.Picture.Width = x_værdi
Picture1.Picture.Height = Billedhøjde / Billedbredde * x_værdi

Husk at afrunde, da Picture1.Picture.Height skal være et heltal, altså:

Picture1.Picture.Height = Round(Billedhøjde / Billedbredde * x_værdi,0)
Avatar billede domino1977 Nybegynder
11. oktober 2002 - 09:45 #5
Jamen vil det da virke lige meget om mit billed er 100 x 500 pixel, og næste post måske er 300x100 pixel og den næste 50x250 pixel????
Avatar billede martin_moth Mester
11. oktober 2002 - 09:55 #6
Ja! Billedet får altid samme bredde, og højde/bredde-forholdet er rigtigt
Avatar billede tubber Juniormester
11. oktober 2002 - 10:06 #7
Har lige et spg til dig martin :O)

Skal man ikke chekke om det er højden eller breden der er størst ?

If Picture1.Picture.Width > Picture1.Picture.Height Then
    Picture1.Picture.Width = x_værdi
    Picture1.Picture.Height = Billedhøjde / Billedbredde * x_værdi
Else If Picture1.Picture.Width > Picture1.Picture.Height Then
    Picture1.Picture.Width = Billedhøjde / Billedbredde * y_værdi
    Picture1.Picture.Height = y_værdi
Else
    Picture1.Picture.Width = x_værdi
    Picture1.Picture.Height = y_værdi
End If

Eller er det lige meget ?
Avatar billede tubber Juniormester
11. oktober 2002 - 10:09 #8
hov skulle være

Har lige et spg til dig martin :O)

Skal man ikke chekke om det er højden eller breden der er størst ?

If Picture1.Picture.Width > Picture1.Picture.Height Then
    Picture1.Picture.Width = x_værdi
    Picture1.Picture.Height = Billedhøjde / Billedbredde * x_værdi
Else If Picture1.Picture.Width < Picture1.Picture.Height Then
    Picture1.Picture.Width = Billedhøjde / Billedbredde * y_værdi
    Picture1.Picture.Height = y_værdi
Else
    Picture1.Picture.Width = x_værdi
    Picture1.Picture.Height = y_værdi
End If

Den Else er kun opfyldt hvis x = y altså billedet er kvadratisk.....
Avatar billede martin_moth Mester
11. oktober 2002 - 10:14 #9
Om det er ligemeget skal du da ikke spørge mig om :o)

domino1977 må vælge om han altid vil have samme bredde på billederne, altid samme højde eller måske vælge at skalere afhængigt af om bredden på billedet er større end højden eller omvendt - det mit svar gik på var blot at give en metode til at skalere et billede, mens man bibeholder højde/bredde-forholdet *S*
Avatar billede tubber Juniormester
11. oktober 2002 - 10:27 #10
jo kan jeg godt følge.....tænkte bare på om det ikke bliver forkert hvis højden er størrer end breden, altså rent matematisk

H/B*x = B/H*y <--- giver det det samme ?

skal vel også bytte om på tæller og nævner ? havde jeg ikke lige set jeg ikke havde fået gjort
Avatar billede martin_moth Mester
11. oktober 2002 - 10:37 #11
Det er klart - du har ret!

Altså:

1) Fast X-værdi
Picture1.Picture.Width = x_værdi
Picture1.Picture.Height = x_værdi * (Billedhøjde / Billedbredde)

2) Fast Y-værdi
Picture1.Picture.Height = y_værdi
Picture1.Picture.Width = y_værdi / (Billedhøjde / Billedbredde)

Det kaldes også én ligning med én ubekendt :o)
Avatar billede tubber Juniormester
11. oktober 2002 - 10:44 #12
og så er det jo bare chekke med den if sætning hvilken formel der skal bruges :O)

If x < y then
fast y_værdi
else if x > y then
fast x_værdi
else
picture1.picture.height=x
picture1.picture.width=x
end if

Har jeg fanget den korekt så ?
Avatar billede domino1977 Nybegynder
11. oktober 2002 - 11:22 #13
Hvis det er fordi at I er lidt itvivl om hvad jeg mener så prøv at åbne Access.... lav en formular. indsæt et billed!

Vælg egenskaber på rammen og vælg: ZOOM.... læg mærke til forskellen på ZOOM og STRETCH......

Måske det hjælper lidt??
Avatar billede martin_moth Mester
11. oktober 2002 - 11:23 #14
Det er slet ikke så kompliceret endda. Ligningen tager udgangspunkt i, at forholdet mellem højde og bredde skal være ens for det oprindelige billede og for Picture1. Altså :

x_værdi / y_værdi = picture1.picture.width / picture1.picture.height

Du vælger den ene af de 2 ubekendte til en fast værdi, fx. x_værdi = værdi. Derefter rykker man rundt på tingene, indtil den eneste ubekendte står tilbage på den ene side af lighedstegnet. Og husker at afrunde!

Hvad man så vil vælge som fast værdi afhænger af formålet - måske skal x_værdi altid være det samme, eller måske skal man altid vælge billedets korteste kant som grundlinie - hvad ved jeg. Derfor kan jeg ikke sige om "du har fanget den", da jeg ikke ved om det du skriver er det domino1977 ønsker. Måske VIL han altid have billederne altid er 400px brede, og så kan din løsning ikke bruges  - netop derfor undlader jeg at skrive andet end hvordan man skalere et billede til korrekt bredde/højde-forhold ;o)
Avatar billede domino1977 Nybegynder
11. oktober 2002 - 11:28 #15
Martin mouth:

Vil du ikke lige lave et eks og sende den til mig?? Jeg må indrømme at jeg ikke lige helt kan overskue det lige nu!
Avatar billede martin_moth Mester
11. oktober 2002 - 11:44 #16
Jeg kan næsten ikke skrive det mere tydeligt end i mit svar 11/10-2002 10:37:01...
Avatar billede domino1977 Nybegynder
11. oktober 2002 - 11:47 #17
oK..... det vil sige at det KUN er det fra det svar jeg skal bruge???
Avatar billede martin_moth Mester
11. oktober 2002 - 11:56 #18
Svaret er et princip - en tankegang - en metode - en fremgangsmåde til skalering. Svaret er til at give dig forståelse hvad ideen med det hele er - jeg går ud fra, at du selv koder det bagefter.

Hvis du vil have mig til at kode det for dig, så skal du først bestemme hvad du vil have - skal alle billeder have samme bredde, samme højde, eller er der en bestemt højde og/eller bredde, billederne aldrig må overskride?
Avatar billede tubber Juniormester
11. oktober 2002 - 13:52 #19
Jeg ved det heller ikke Martin_moth, det er nu mest for min egen skyld jeg spørger for selv at forstå det helt :O)

Og tror faktisk jeg har fattet det, det eneste jeg fik første gang var matematikken i det :O)
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
Kategori
Kurser inden for grundlæggende programmering

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