Eli Minulla on kuva leikepöydällä ja pastetan sen wöördiin.
Onnistuuko kuvan pienentäminen esim. jollain kätevällä funktiolla ?
Seuraavat tiedot helpottavat ongelmanratkaisua...
Haluatko pienentää kuvan ennen pastettamista, pastettamisen jälkeen vai ennen leikepöydälle siirtämistä? Haluatko pienentää kuvaa "fyysisesti", vai vain esittää pienempänä?
Kuvan pienentämiseen / suurentamiseen soveltuu loistavasti lähettämäni strecthblt koodivinkki.
... Joka ei sitten toimi Win98:lla. Ei ainakaan pitäisi toimia.
Lataa IrfanView, liitä siihen ja pienennä sillä. Painttiakin voi käyttää. Wordikin osaa pienentää.
Hmmm.. Metabolix: Kyse taitaa olla ohjelmallisesta pienentämisestä... ei siis siitä, että saako kuvan ylipäätään pienennettyä vaan kuinka se ohjelmallisesti Visual basicilla saadaan toteutettua.
Lähtisin penkomaan asiaa lukemalla kuvan pois leikepöydältä, käsittelemällä sen ja palauttamalla leikepöydälle. Kuvan muistin varaiseen käsittelyyn löytyy taas netistä apuja.
Hmh,
Meinaatko, että vöördissä tai paintissa käsipelin pienentää ?
Sen kun saat jollain ohjattua vbstä.. :-)
Pastetan siis kuvan ihan word.applicationiin.
Eli esim jotain tämmöistä:
wordapplication.picture.resize <-- itse keksin
Mielummin ilman mitään lisäkomponentteja jos sais toimimaan, niin olisi parempi.
Pitänee vielä käväistä katsomassa tuomaksen vinkkiä jos jotain löytyis...
En nyt ihan noin vaan tähän suuntaan:
Dim vPic As Variant 'Leikepöydältä muistiin: Set vPic = Clipboard.GetData(vbCFBitmap) '...Skaalaa 'Takaisin Leikepöydälle: Clipboard.SetData vPic, vbCFBitmap 'Siirrä sovellukseen...
Seuraava VBA-koodi lisää kuvan ja muokkaa sen kokoa...
Sub SetPicture() Dim Mitta As Single 'estetään näytön vilkkuminen, kun kuva tuodaan ja sen kokoa muokataan Application.ScreenUpdating = False 'asetetaan kuva siihen kohtaan missä kohdistin sattuu olemaan Selection.InlineShapes.AddPicture FileName:= _ "C:\Documents and Settings\ChosenOne\My Documents\My Pictures\Heavy Metal Magazine\HeavyMetal01.jpg" _ , LinkToFile:=False, SaveWithDocument:=True 'valitaan kuva Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend 'otetaan talteen nykyinen korkeus Mitta = Selection.InlineShapes(1).Height 'pienennetään kuvan korkeutta 50% Selection.InlineShapes(1).Height = Round(Mitta * 0.5, 1) 'tehdään sama myös leveydelle, eli pienennetään 50% Mitta = Selection.InlineShapes(1).Width Selection.InlineShapes(1).Width = Round(Mitta * 0.5, 1) 'palautetaan kohdistin kuvan oikealle puolelle Selection.MoveRight Unit:=wdCharacter, Count:=1 'näytetään kansalle mitä on tapahtunut Application.ScreenUpdating = True End Sub
Edit: Tietysti tässä tapauksessa liität kuvan leikepäydältä, mutta koon muokkaaminen menee noin, jos sen haluaa kerran tehdä Wordin puolella...
Suurkiitos badsourcelle!
Homma kävi melkein kuin elokuvissa.
Not Bad source ;D
Aihe on jo aika vanha, joten et voi enää vastata siihen.