Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6 kuvan kanssa kikkailu

Toitsu [01.08.2007 09:47:34]

#

Eli formi, jossa on "liian" iso kuva picture1, A4 kokoinen. Picture boxin päällä on nippu labeleitä, joihin tulostetaan tekstiä, eli täytetään taustakuvana oleva kaavake. Lopuksi tämä tulostetaan a4 kokoisena ulos. Homma toimii, melkein. Ongelma tulee siinä, että kuvan pitäisi mahtua kokonaan ruudulle, että framella ympäröity alue kopioidaan kuvaksi, joka sitten tulostetaan, jolloin tekstit saadaan istumaan oikeille paikoille kuvaan. Eli kuva ei mahdu ruudulle ja tule mm. starttivalikko mukaan tms.. miten homman saisi muutettua niin, että tämä tehdään piilossa, eikä näkösällä?

Käytän putkasta löytynyttä tekniikkaa eli:

Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = source

 Me.ScaleMode = 3
    Picture1.AutoRedraw = True
    ' kopioidaan oikea alue kuvaan
    BitBlt Picture1.hdc, 0, 0, Frame1.Width, Frame1.Height, Me.hdc, Frame1.Left, Frame1.Top, SRCCOPY
    Picture1.Picture = Picture1.Image
    ' lähetetään kuva tulostimelle
    Printer.PaintPicture Picture1, 0, 0
    Printer.EndDoc

Eli jos homman saisi toimimaan piilossa jotenkin ja vain todellakin frame1:n sisältö tai jos vaikka picture1 sisältö ja labelit sen päällä..?

neau33 [01.08.2007 10:20:33]

#

Moikka Toitsu!

Voisit vaikka käyttää koko formia elikä tulostaa kaiken PrintForm komennolla...
Elikä pistät ekax formin borderstyle'ksi none ja taustavärin valkoiseksi (kuten myös labeleitten ja muitten kontrollien) ja sit vaikkapa formin Top-arvoksi 1000...ja mikäänhän ei estä käyttämästä vaikkapa aivan erillistä formia juuri tähän tulostusjutskaan jne...

Toitsu [01.08.2007 12:25:42]

#

No niin..

Huomattavasti parempi lähestymistapa. Voiko tuota tulostus tarkkuutta säätää? Oletuksena ei kovinkaan tarkka.

neau33 [01.08.2007 13:36:45]

#

Moikka taas Toitsu!

Säädä suoraan tulostuksenhallinnassa.

setä [01.08.2007 13:54:05]

#

En ole aivan varma nutta PrintForm-metodi tulostaa Formista SreenShotin jolloin resoluutiota voi parantaa vain suurentamalla tulostettavaa formia. Vai onko VB6:ssa jokin muu PrintForm-metodi?

neau33 [01.08.2007 16:05:04]

#

Moikka taas Toitsu!

Pikku lisäys vielä - kokeile image objektia sen pictureboxin tilalle, säädä backstyle transparentiksi ja testaile zoom ominaisuutta.

Vastaus

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

Tietoa sivustosta