Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6, VBA: vb6 Leikepöydällä olevan kuvan pienentäminen ?

Sivun loppuun

juze [02.08.2004 10:12:51]

#

Eli Minulla on kuva leikepöydällä ja pastetan sen wöördiin.
Onnistuuko kuvan pienentäminen esim. jollain kätevällä funktiolla ?

BadSource [02.08.2004 10:55:31]

#

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ä?

tuomas [02.08.2004 12:44:05]

#

Kuvan pienentämiseen / suurentamiseen soveltuu loistavasti lähettämäni strecthblt koodivinkki.

Metabolix [02.08.2004 13:08:38]

#

... 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ää.

Antti [02.08.2004 16:02:13]

#

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.

juze [03.08.2004 09:26:57]

#

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...

Antti [03.08.2004 11:01:54]

#

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...

BadSource [03.08.2004 12:00:12]

#

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...

juze [03.08.2004 15:49:37]

#

Suurkiitos badsourcelle!
Homma kävi melkein kuin elokuvissa.

Antti [03.08.2004 16:43:08]

#

Not Bad source ;D


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta